连接远程linux服务器

2023-05-16

SSH简介

我们在 搭建服务器时通常选择Linux版本,如果远程的服务器没有桌面,mac电脑如何在本地操作远程的服务器呢?方法是很简单的,mac电脑为我们提供了ssh命令,使用这个命令可以快速连接到远程linux服务器。

SSH是一种加密的网络传输协议,它可以在不安全的网络中提供安全的传输环境,通常利用SSH来传输命令行界面,远程执行命令。

SSH工作的大概原理是客户端在建立连接过程中,服务端收到用户的登录请求,然后把服务端的公钥发给用户,客户端拿到这个公钥,把登录密码加密发送给服务端,服务端使用自己的私钥,解密登录密码,如果密码正确,则允许客户端登录。

如何连接远程主机

第一种方法

在macOS中(Linux系统同样适用),打开终端,输入ssh username@host就可以登录远程主机了。这里username需要替换为你要登录的用户名称,host需要替换为你要登录的ip。比如,要登录root用户,远程主机ip为10.20.123.234。在终端输入ssh root@10.20.123.234就可以了。

ssh root@10.20.123.234

在这种情况下,默认使用的端口是22。有些远程主机把登录端口设置为其他端口,比如12000,这时命令需要制定端口,改为

ssh -p 12000 root@10.20.123.234

第二种方法

打开终端后,在菜单栏选择新建远程连接…,系统弹出了远程连接配置页面,在设置页面中设置下远程信息就可以了。用户名称根据需要改变,这里以root为例。ssh协议选择默认的自动就好了。如果需要指定端口,在下面的输入框中,加上-p xxxx就可以了。使用这种方法有个好处是不用记住远程主机的ip地址了,电脑里会自动保存,下回只需要输入密码就可以实现登录远程主机了。

SSH如何设置禁止登录root

如果每次都登录远程主机的root账户,将会带来安全隐患,为了提高远程主机的安全性,可以把远程主机设置为禁止ssh到root账户。打开远程主机/etc/sshd_config文件,#PermitRootLogin yes 这一行改为PermitRootLogin no就可以了。#号代表注释,需要去掉,值需要从yes改为no。

注意设置完成后,需要重启远程主机的ssh服务。如果远程主机是CentOS系统,可以使用service sshd restart命令。如果远程主机是debain或者ubuntu系统,可以使用/etc/init.d/ssh restart命令。

SSH如何免密登录

上面介绍了两种登录远程主机的方法,这两种方法每次都需要输入登录密码,这样是比较麻烦的,为了简化操作,我们可以使用免密登录。

首先客户端这里需要执行命令,注意是客户端的机器上执行

ssh-keygen -t rsa

一路回车即可。执行之后,在$HOME/.ssh目录下会自动生成id_rsa.pub和id_rsa文件。id_rsa.pub是公钥,id_rsa是私钥。

之后,再执行命令

ssh-copy-id -p xxxx username@host

如果是默认的22号端口,-p xxxx可以不加。

username需要替换为你要登录的用户名,host需要替换为你要登录的主机地址。

免密登录配置已经完成了,重新登录下远程主机,已经不需要输入密码。如果还是登录不成功,可以尝试重启ssh服务。如果远程主机是CentOS系统,可以使用service sshd restart命令。如果远程主机是debain或者ubuntu系统,可以使用/etc/init.d/ssh restart命令。

学习了一项新技能,可以放松下了😆

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接远程linux服务器 的相关文章

  • 用另一个文件的标签为图表(ggplot2)中的标题添加下标

    在我的程序中 我有两个主要文件 第一个包含数据 第二个包含标签 或图形标题 文件总数1 数据 3 10000 3 32039232 1 0 0017290351 2 0 0002781092 3 10001 3 32101193 1 0 0
  • Linux shell 根据第二列对文件进行排序?

    我有一个这样的文件 FirstName FamilyName Address PhoneNumber 如何按 FamilyName 排序 如果这是 UNIX sort k 2 file txt 您可以使用多个 k用于对多列进行排序的标志 例
  • Xvfb 冻结初始化 GLX 扩展

    我正在尝试运行无头 Xvfb 服务器来捕获 Amazon EC2 micro 上的屏幕截图 但它在 GLX 上陷入了困境 我使用此脚本安装了 GLX Xvfb 和所有库 https gist github com joekiller 414
  • Bash:检查是否给出了参数(例如是否有参数“-a”?)

    我有一个脚本 它应该接受 2 个参数 s 和 d 如果未给出 d 参数 我想删除我的调试文件 与 s 相同 如何检查 1 或 2 是否为 s 或 d 舒尔有两个参数 我可以做到 蛮力 if test 1 d test 2 d then rm
  • Qt 嵌入式触摸屏 QMouseEvents 在收到 MouseButtonRelease 之前未收到

    我在带有触摸屏的小型 ARM 嵌入式 Linux 设备上使用 Qt 4 8 3 我的触摸屏配置了 tslib 并对其进行了校准 因此 etc 中有一个 pointcal 文件 我的触摸事件的位置工作得很好 但无论如何我都会在鼠标按下或鼠标释
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • 为什么 OS X 和 Linux 之间的 UTF-8 文本排序顺序不同?

    我有一个包含 UTF 8 编码文本行的文本文件 mac os x cat unsorted txt foo foo 津 如果它有助于重现问题 这里是文件中确切字节的校验和和转储 以及如何自己生成文件 在 Linux 上 使用base64 d
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud

随机推荐