Linux命令SSH连接其他linux
前言
1、linux服务器下一般都会安装ssh服务,ssh服务可以建立安全的远程连接,方便日常通过一台linux设备维护其他的服务器设备。
2、SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
3、SSH之所以能够保证安全,原因在于它采用了公钥加密。整个过程是这样的:
1 | (1)远程主机收到用户的登录请求,把自己的公钥发给用户。 |
安装SSH服务
1 | 1、如果你用的是redhat,fedora,centos等系列linux发行版,那么敲入以下命令: |
由于本机在之前就已经安装好了SSH服务,所以提示如下:
开启SSH服务
1 | service sshd start |
执行命令结果如下:
卸载SSH服务
1 | 1、如果你用的是redhat,fedora,centos等系列linux发行版,那么敲入以下命令: |
执行命令结果如下:
Linux操作系统从一台服务器SSH远程连接至另一台服务器
示例1
直接连接远程主机端口
前提条件:
两台服务器A、B;当前所在位置:服务器A;SSH服务已安装。
判断:
在服务器A中执行命令 ping B的IP地址 ,在能ping通的前提条件下
进入服务器A后,输入:
1 | ssh -l 主机名 IP |
- 主机名:要跳转的Linux服务器的主机名
- IP:要跳转的Linux服务器的ip地址
或者:
1 | ssh 用户名@服务器地址 |
然后回车输入服务器B的用户密码就可以跳转到另一台服务器B。如 ssh root@127.0.0.1
示例2
1、假定你要以用户名user,登录远程主机host,只要一条简单命令:
1 | $ ssh username@remote_host |
2、如果本地主机用户名与远程主机用户名一致,登录时可以省略用户名:
1 | $ ssh remote_host |
3、SSH服务的默认端口是22:你的登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。(指定端口连接)
1 | ssh username@remote_host -p 2222 |
4、第一次登录远程主机:
1 | 如果你是第一次登录对方主机 |
示例3
1、使用密码登录,用户每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。
2、所谓”公钥登录”,原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
3、这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用 ssh-keygen 命令生成一个:
运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。
运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
4、这时再输入下面的命令,将公钥传送到远程主机host上面:
1 | $ ssh-copy-id user@host |
好了,从此你再登录,就不需要输入密码了。
5、如果还是不行,就打开远程主机的 /etc/ssh/sshd_config 这个文件,检查下面几行前面”#”注释是否取掉。
1 | RSAAuthentication yes |
然后,重启远程主机的ssh服务:
1 | // ubuntu系统 |
示例4
通过密钥连接:
1 | ssh -i path/to/key_file username@remote_host |
示例5
ssh跳板:通过跳板机器连接远程主机;多个跳板使用逗号隔开
1 | ssh -J username@jump_host username@remote_host |
实例6
本实例的客户端和服务端均为Ubuntu操作系统。
ssh客户端:
1 | 用户名(user_name): alpha |
ssh服务端:
1 | 用户名(user_name): omega |
ssh服务器远程登录
1 普通登录: ssh user_name@server_ip
1 | [alpha@客户端] :~$ ssh omega@119.9.90.190 |
2 免ip登录: ssh Host
2.1 客户端alpha用户进入隐藏ssh目录
1 | [alpha@客户端] :~$ cd ~/.ssh |
2.2 新建/修改config文件: sudo vim config
config文件单元构成:
1 | Host: 登录名 |
config文件中可以设置多个Host:
1 | [alpha@客户端] :~$ cat config |
2.3 实现免ip登录
1 | [alpha@客户端] :~$ ssh omi |
3 免密登录: ssh -i id_rsa Host
和 ssh Host
3.1 客户端alpha用户进入隐藏ssh目录
3.2 生成ssh登录密钥与公钥(若之前未生成)
1 | [alpha@客户端] :~/.ssh$ ls |
3.3 将公钥发送给需要免密登录的服务器的用户
1 | [alpha@客户端] :~/.ssh$ ssh-copy-id omega@119.9.90.190;echo "ssh-copy-id omi 也行" |
此时,[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
:
1 | [alpha@客户端] :~$ cat config |
即可进一步简化ssh远程登录命令:
1 | [alpha@客户端] :~/.ssh$ ssh omi |
如果服务端相应免密用户的密码或是用户名有更改, 需要对客户端中对应用户~/.ssh下:
(1)修改config中Host的信息
(2)删除known hosts
文件
补充内容
补充1:不用输入ssh -i命令行即可携带pem文件快速登录的方法
1、如果要登录的Linux服务器只允许pem认证。
1 | 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
内容如下:
1 | Host * |
保存后,更改权限: sudo chmod 600 key.pem
然后在当前目录/home/me下输入 ssh denglu
即可登录到目标服务器。再也不用每次输入长长的命令了
补充2:Linux操作系统中的路径符号
补充3: exit 退出远程连接服务器,回到本机的命令终端
相关链接(侵删)
欢迎到公众号来唠嗑: