最近搭建了一个远程 Linux 服务器,在使用过程中每次SSH登录都需要输入密码,很不方便。所以想配置一下 SSH Key 实现 SSH 免密登录。同时,还要保证配置的过程中不能覆盖当前配置好的 SSH Key,比如 Github使用到的SSH。
所以现在有两个问题需要解决:
- 问题1: 登录时不用输入密码进行验证。
- 问题2: 多 SSH Key 管理。保证本地电脑上为Github配置的 SSH Key不会被覆盖。
下面我们来解决这两个问题
1. 免密码登录
在本地电脑上生成 SSH公钥和私钥。下面的命令是生成 SSh 公钥和私钥到指定目录下。
其中的路径和邮箱地址请更换为你自己的。
$ ssh-keygen -t rsa -f /Users/user/.ssh/rsa_vps/id_rsa_remote -C "user@domain.com"
$ ls id_rsa_remote
id_rsa_remote id_rsa_remote.pub
将公钥上传到服务器.ssh
目录下
$ scp id_rsa_vps.pub root@123.456.789.123:~/.ssh/
最后在远程服务器上将公钥内容追加到 ~/.ssh/authorized_keys
文件中
cat id_rsa.pub >> authorized_keys
2. 多SSH管理
如果要管理多个 SSH,需要在用户主目录下的 .ssh
文件夹下新建并配置config
文件。
$ vim ~/.ssh/config
在config
文件里按照如下格式进行填写
Host github.com
IdentityFile ~/.ssh/id_rsa
User test
Host 123.456.789.123
IdentityFile ~/.ssh/id_rsa_romote/id_rsa_remote
User root
每个参数具体的含义如下
Host 别名
HostName 主机名
Port 端口
User 用户名
IdentityFile 密钥文件的路径
配置好了之后,我们快去测试一下吧。
# 测试GitHub
$ ssh -T git@github.com
Hi test! You've successfully authenticated, but GitHub does not provide shell access.
# 测试远程服务器
$ ssh root@123.456.789.123
Welcome to Ubuntu 16.10 (GNU/Linux 4.8.0-39-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
14 packages can be updated.
0 updates are security updates.
*** System restart required ***
root@Ubuntu:~#
✌️ 成功免密码登录远程服务器!