Linux操作系统如何使用SSH命令连接另外一台Linux服务器
前言
1、linux服务器下一般都会安装ssh服务,ssh服务可以建立安全的远程连接,方便日常通过一台linux设备维护其他的服务器设备。
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。 (2)用户使用这个公钥,将登录密码加密后,发送回来。 (3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
安装SSH服务
1、如果你用的是redhat,fedora,centos等系列linux发行版,那么敲入以下命令: sudo yum install sshd 或 sudo yum install openssh-server(由osc网友 火耳提供) 2、如果你使用的是debian,ubuntu,linux mint等系列的linux发行版,那么敲入以下命令: sudo apt-get install sshd 或 sudo apt-get install openssh-server(由osc网友 火耳提供) 然后按照提示,安装就好了。
由于本机在之前就已经安装好了SSH服务,所以提示如下:
开启SSH服务
service sshd start
执行命令结果如下:
卸载SSH服务
1、如果你用的是redhat,fedora,centos等系列linux发行版,那么敲入以下命令: yum remove sshd
2、如果你使用的是debian,ubuntu,linux mint等系列的linux发行版,那么敲入以下命令: sudo apt-get –purge remove sshd
执行命令结果如下:
Linux操作系统从一台服务器SSH远程连接至另一台服务器
示例1
直接连接远程主机端口
前提条件:
两台服务器A、B;当前所在位置:服务器A;SSH服务已安装。
判断:
在服务器A中执行命令 ping B的IP地址 ,在能ping通的前提条件下
进入服务器A后,输入:
ssh -l 主机名 IP
- 主机名:要跳转的Linux服务器的主机名
- IP:要跳转的Linux服务器的ip地址
或者:
ssh 用户名@服务器地址
然后回车输入服务器B的用户密码就可以跳转到另一台服务器B。如 ssh root@127.0.0.1
示例2
1、假定你要以用户名user,登录远程主机host,只要一条简单命令:
$ ssh username@remote_host
如:ssh pika@192.168.0.111
2、如果本地主机用户名与远程主机用户名一致,登录时可以省略用户名:
$ ssh remote_host 如:ssh 192.168.0.111
3、SSH服务的默认端口是22:你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。(指定端口连接)
ssh username@remote_host -p 2222 如:$ ssh user@host -p 2222 该条命令表示,ssh直接连接远程主机的2222端口。
4、第一次登录远程主机:
如果你是第一次登录对方主机 $ ssh root@12.18.429.21 系统会出现下面的提示:: The authenticity of host 'host (12.18.429.21)' can't be established. RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d. Are you sure you want to continue connecting (yes/no)? 这段话的意思是,无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗? 所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较,就容易多了。 很自然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在自己的网站上贴出公钥指纹,以便用户自行核对。 假定经过风险衡量以后,用户决定接受这个远程主机的公钥。 Are you sure you want to continue connecting (yes/no)? yes 系统会出现一句提示,表示host主机已经得到认可。 Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts. 然后,会要求输入密码。 Password: (enter password) 如果密码正确,就可以登录了。 当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。 每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。
示例3
1、使用密码登录,用户每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。
运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
4、这时再输入下面的命令,将公钥传送到远程主机host上面:
$ ssh-copy-id user@host
好了,从此你再登录,就不需要输入密码了。
5、如果还是不行,就打开远程主机的 /etc/ssh/sshd_config 这个文件,检查下面几行前面"#"注释是否取掉。
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
然后,重启远程主机的ssh服务:
// ubuntu系统 service ssh restart // debian系统 /etc/init.d/ssh restart
示例4
通过密钥连接:
ssh -i path/to/key_file username@remote_host
示例5
ssh跳板:通过跳板机器连接远程主机;多个跳板使用逗号隔开
ssh -J username@jump_host username@remote_host
实例
本实例的客户端和服务端均为Ubuntu操作系统。
ssh客户端:
用户名(user_name): alpha
IP地址(client_ip): 192.168.0.33
ssh服务端:
用户名(user_name): omega
IP地址(server_ip): 119.9.90.190
ssh服务器远程登录
1 普通登录: ssh user_name@server_ip
[alpha@客户端] :~$ ssh omega@119.9.90.190 输入omega@119.9.90.190的密码: loading omega@119.9.90.190 ... welcome! [omega@服务端] :~$
2 免ip登录: ssh Host
2.1 客户端alpha用户进入隐藏ssh目录
[alpha@客户端] :~$ cd ~/.ssh [alpha@客户端] :~/.ssh$ pwd /home/exia/.ssh
2.2 新建/修改config文件: sudo vim config
config文件单元构成:
Host: 登录名 ----HostName: 将要登录ssh服务器ip ----User: 将要登录服务器用户名 ----Port: 将要登录服务器端口
config文件中可以设置多个Host:
[alpha@客户端] :~$ cat config Host omi HostName 119.9.90.190 User omega Port 22 Host theroot HostName 119.9.90.190 User root Port 22
2.3 实现免ip登录
[alpha@客户端] :~$ ssh omi 输入omega@119.9.90.190的密码: loading omega@119.9.90.190 ... welcome! [omega@服务端] :~$
3 免密登录: ssh -i id_rsa Host
和 ssh Host
3.1 客户端alpha用户进入隐藏ssh目录
3.2 生成ssh登录密钥与公钥(若之前未生成)
[alpha@客户端] :~/.ssh$ ls config [alpha@客户端] :~/.ssh$ ssh-keygen [alpha@客户端] :~/.ssh$ ls config id_rsa id_rsa.pub
3.3 将公钥发送给需要免密登录的服务器的用户
[alpha@客户端] :~/.ssh$ ssh-copy-id omega@119.9.90.190;echo "ssh-copy-id omi 也行" ssh-copy-id omi 也行 [alpha@客户端] :~/.ssh$ echo "开始免密登录" # 开始免密登录 [alpha@客户端] :~/.ssh$ [alpha@客户端] :~/.ssh$ [alpha@客户端] :~/.ssh$ ssh -i id_rsa omi loading omega@119.9.90.190 ... welcome! [omega@服务端] :~$ cd ~/.ssh [omega@服务端] :~/.ssh$ ls authorized_keys
此时,[omega@服务端] :~/.ssh/authorized_keys
中已经存放了[alpha@客户端] :~/.ssh/id_rsa.pub
中的公钥了。
当然直接打开[alpha@客户端] :~/.ssh/id_rsa.pub
将其中的内容复制粘贴到 [omega@服务端] :~/.ssh/authorized_keys
中最后一行也是可以的。
3.4 最后, 在config文件中各Host的最后添加IdentityFile ~/.ssh/id_rsa
:
[alpha@客户端] :~$ cat config Host omi HostName 119.9.90.190 User omega Port 22 IdentityFile ~/.ssh/id_rsa Host theroot HostName 119.9.90.190 User root Port 22 IdentityFile ~/.ssh/id_rsa
即可进一步简化ssh远程登录命令:
[alpha@客户端] :~/.ssh$ ssh omi loading omega@119.9.90.190 ... welcome! [omega@服务端] :~$
如果服务端相应免密用户的密码或是用户名有更改, 需要对客户端中对应用户~/.ssh下:
(2)删除
known hosts
文件
补充1:不用输入ssh -i命令行即可携带pem文件快速登录的方法
1、如果要登录的Linux服务器只允许pem认证。
ssh -i ~/.ssh/id_rsa.pub azureuser@10.111.12.123
其中的 -i 选项表明,选择一个和公钥匹配的私钥文件路径。默认是~/.ssh/id_rsa。
2、但是每次输入 ssh -i xxxx.pem 用户@ip 地址 就很烦。
3、有个一劳永逸的方法:
进入到自己的用户目录,例如/home/me
把.pem文件放在当前目录
然后vi .ssh/config
内容如下:
Host * ServerAliveInterval 60 Host denglu HostName 你的ip User mojie IdentityFile ~/.ssh/你的pem文件名.pem
保存后,更改权限: sudo chmod 600 key.pem
然后在当前目录/home/me下输入 ssh denglu
即可登录到目标服务器。再也不用每次输入长长的命令了
补充2:Linux操作系统中的路径符号
补充3: exit 退出远程连接服务器,回到本机的命令终端
文章主要转载自:https://www.jianshu.com/p/10023495fba9
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器