Terminal 免密连接服务器

一般连接服务器都会借助类似 SecureCRT 这一类的连接工具,因为可以记住密码,那么如果想用 Terminal 连接服务器,同时又不想输入密码应该如何操作

更多精彩

相关网址

  1. SSH连接服务器+让服务器记住密码及IP - sunyao_123的博客 - CSDN博客
    • 具体内容是从这边博客学到的,不过里面写的有点乱,而且有一个点写错了

实现方式

在本地生成公钥秘钥

  1. 在终端输入 ssh-keygen -t rsa 即可根据提示生成本地公钥密码,如下图
    • Enter passphrase 提示输入的密码用于加密公钥秘钥
    • 如果输入了密码,在配置好连接方式后,对服务器发起连接请求时,虽然不会提示输入服务器密码,但会需要输入此密码
    • 如果直接跳过,不输入密码,对服务器发起连接请求时,则可以直接连接,不需要输入任何密码

在本地配置服务器信息

  1. 根据上图提示可以知道公钥密码生成后存放的目录是 /Users/asing1elife/.ssh/id_rsa ,如下图
    • asing1elife 是自己的用户文件夹名称
  2. 前往上述目录,输入 vi config 编辑待连接的服务器配置,如下图
    • Host 是服务器名称,如果你想通过输入 ssh testServer 就直接连接服务器,那么这里的名称就应该输入 testServer ,我这里为了保持服务器信息的明确区分,直接使用的 IP
    • HostName 是服务器 IP 地址
    • User 是进行服务器连接的服务器用户
    • Port 服务器端口号
    • IdentityFile 之前生成的本地秘钥存放路径,前面参考的文档中这个地方就写错了

前往服务器打开 RSA 连接许可

  1. 登录服务器,输入 vi /etc/ssh/sshd_config ,编辑服务器 SSH 连接配置文件,找到下图中的内容
    • 前三个选项默认是被注释掉的,删掉注释即可打开配置

将本地公钥内容添加到服务器的公钥列表中

  1. 在本地终端中输入以下内容,可将本地公钥内容传输到服务器的公钥列表中
    • 这里输入目录结构的是,没有提示,需要完全手工输入
    • authorized_keys 不是目录,而是一个文件
1
scp /Users/asing1elife/.ssh/id_rsa.pub root@192.168.7.8:~/.ssh/authorized_keys
  1. 传输完成后登录服务器,输入 cat ~/.ssh/authorized_keys 就可以看到里面有公钥内容,说明配置已经完成了
  2. 现在再本地终端中输入 ssh 192.168.7.8 就可以直接登录指定服务器
    • 如果之前的配置中有配置 passphrase ,则会提示输入该密码,注意这里要求的不是服务器密码,而是之前自己配置的公钥秘钥密码