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 root@1.1.1.1 mkdir.ssh
上传公钥
本地Ubuntu新建一个终端,注意替换id_rsa.pub
以及远程主机VPS的地址
scp /home/augustdoit/.ssh/id_rsa.pub root@1.1.1.1:~/.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
关于免输入密码登陆
涉及的密码包括两个
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
注意:
本地生成多套公钥与私钥,可以设置生成的目录,在执行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
测试结果