Ubuntu SSH密钥远程登陆VPS(CentOS)以及多SSH-KEY管理

环境
本地:Ubuntu
运程主机VPS:CentOS7
免输密码设置
多远程主机VPS对应多ssh key设置
多远程主机VPS公用一个ssh key设置
更改ssh默认端口详见:VPS-CentOS 7-Secrity

说明:为了保护隐私,本文涉及本人VPS地址的用1.1.1.1代替。

本地生成公钥与私钥匙

在Ubuntu下生成ssh公钥和私钥,
若想免密码登陆,这里不设密码,本人为了安全还是设置了,后面有专门讲解免输入密码。

ssh-keygen -t rsa

输出

Generating public/private rsa key pair.
Enter file in which to save the key (/home/augustdoit/.ssh/id_rsa):     ##直接回车=默认路径,或者自己填写
Created directory '/home/augustdoit/.ssh'.
Enter passphrase (empty for no passphrase):                             ##输入密码(不设密码则直接回车)
Enter same passphrase again:                                            ##重复密码
Your identification has been saved in /home/augustdoit/.ssh/id_rsa.
Your public key has been saved in /home/augustdoit/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:+kIoJPxSwZ2LkwFJp6UMZ4J17kokSuVXUaZSEgA37U4 augustdoit@augustdoit
The key's randomart image is:
+---[RSA 2048]----+
|==OB=oo+oo       |
|+=O*.++ o        |
|o=..Bo..         |
|++.*.E.          |
|.o+ =.  S        |
| o.o....         |
|  o. ..          |
|      ..         |
|       ..        |
+----[SHA256]-----+

生成的公钥、私钥保存在/home/augustdoit/.ssh/目录下
公钥:id_rsa.pub
私钥:id_rsa

参数说明
参数-t rsa 表示使用rsa算法进行加密(也可指定为dsa算法)
参数-b 4096 设置采用的字节长度,默认2048,变态点可以选4096,生成的时间稍长点。

将公钥上传到远程主机VPS

ssh登陆远程主机VPS,创建.ssh目录(如果有则忽略)

ssh [email protected]
mkdir .ssh

上传公钥

本地Ubuntu新建一个终端,注意替换id_rsa.pub以及远程主机VPS的地址

scp /home/augustdoit/.ssh/id_rsa.pub [email protected]:~/.ssh/

如图

上传公钥

远程主机VPS导入公钥,设置权限

回到ssh登陆远程主机VPS那个终端

导入公钥

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

设置权限

cd /root/.ssh/

chmod 600 authorized_keys

修改sshd配置文件

vi /etc/ssh/sshd_config

找到下面行,确保前面的#已删除

RSAAuthentication yes         //Centos7有些版本可能不含这行,不用管
PubkeyAuthentication yes
AuthorizedKeysFile    .ssh/authorized_keys
PasswordAuthentication no        //免密码,下有说明

重启ssh服务

service sshd restart

SSH KEY

关于免输入密码登陆

涉及的密码包括两个
1.远程主机用户例如root的密码
2.生成ssh key的密码

上面更改的

PasswordAuthentication no

针对的是远程主机用户例如root的密码,不能免除ssh key的密码。
所以若想完全免输密码,生成key的过程也不要设置密码。

多SSH KEY管理

如果要管理多个ssh key,需要在用户主目录下的 .ssh文件夹下新建并配置config文件。

两种情况
多个远程主机VPS共用一个密钥id_rsa
多个远程主机VPS对应多个密钥id_rsa

多个远程主机VPS共用一个密钥id_rsa

远程服务器vps1: 1.1.1.1
远程服务器vps2: 2.2.2.2

本地Ubuntu下

cd 
vi .ssh/config

添加

Host 1.1.1.1
IdentityFile ~/.ssh/id_rsa
User root

Host 2.2.2.2
IdentityFile ~/.ssh/id_rsa
User root

参数含义如下

HostName  主机名/IP
User      用户名
IdentityFile 密钥文件的路径
Port 端口号
DynamicForward 本地端口号

测试结果

多个远程主机VPS共用一个密钥`id_rsa`

多个远程主机VPS对应多个密钥id_rsa

注意:
本地生成多套公钥与私钥,可以设置生成的目录,在执行ssh-keygen -t rsa前需要先创建好目录。
例如/home/augustdoit/.ssh/vps2/id_rsa
创建目录
cd .ssh
mkdir vps2
ssh-keygen -t rsa 此时设置目录为/home/augustdoit/.ssh/vps2/id_rsa
上传、导入、设置权限以及更改配置文件这里不再说了,上面有

确保远程服务器上传的id_rsa.pub与本地id_rsa对应

远程服务器vps1: 1.1.1.1 对应 /home/augustdoit/.ssh/id_rsa
远程服务器vps2: 2.2.2.2 对应 /home/augustdoit/.ssh/vps2/id_rsa

修改config文件

cds
vi .ssh/config

改为

Host 1.1.1.1
IdentityFile ~/.ssh/id_rsa
User root

Host 2.2.2.2
IdentityFile ~/.ssh/vps2/id_rsa
User root

测试结果

多个远程主机VPS对应多个密钥`id_rsa`