如果使用linux操作系统工作,常常要ssh远程登录或者传输文件到各种测试环境服务器或者常常要使用linux服务器跳转登录其他linux服务器,需要记住或者找到各种账户/端口/密码,这个时候使用SSH Keygen产生的key来免密码登录就能一劳永逸了(线上生产环境的服务器建议一定不要,人总有手抖的时候,安全第一),因为是比较隐蔽的登录方式黑客也常常会使用这种手段给成功入侵的服务器留下后门。

SSH (Secure SHELL)是一种开源的被广泛使用的网络协议,主要用于登录远程服务器执行命令或程序,也是使用 secure copy (SCP) Protocol 用于传输文件的基础。下面就介绍下怎么使用ssh keys无密码登录到远程服务器。

下面的例子是要从 服务器A 192.168.0.1 使用SSH Keygen免密码登录到 服务器B 192.168.0.2的步骤。 1首先登录服务器A 192.168.0.1或者 打开自己的linux系统终端

$ ssh-keygen -t rsa

使用默认生成的Keys文件一般就行,回车几次,直到生成Keys成功有下面的类似随机字符画产生

The key's randomart image is:
+--[ RSA 2048]----+
|        ..oooE.++|
|         o. o.o  |
|          ..   . |
|         o  . . o|
|        S .  . + |
|       . .    . o|
|      . o o    ..|
|       + +       |
|        +.       |
+-----------------+

2给服务器B 192.168.0.2的免登录账户,这里是root账户,创建一个 .ssh的文件夹

$ssh root@192.168.0.2 mkdir -p .ssh

输入服务器B 192.168.0.2 root账户的密码

3把第一步产生公钥内容写入到到服务器B 192.168.0.2的认证文件

$ cat .ssh/id_rsa.pub | ssh root@192.168.0.2 'cat >> .ssh/authorized_keys'

4如果是新产生的认证文件需要修改权限

$ ssh root@192.168.0.2 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

搞定,最后验证下登录服务器B是否还需要密码

$ ssh root@192.168.0.2

直接就能登录了,再也不需要各种密码各种找。


本文地址
本文采用 知识共享署名 4.0 国际许可协议进行许可,欢迎转载内容,并请注明出处。