远程服务器设置SSH Key免密登录
为了远程服务器的安全使用及远程连接方便,设置SSH Key免密码登录。
(分为用户操作和管理员/sudoer操作)
用户操作步骤
1. 在服务器上生成密钥
用ssh远程连接到服务器后,执行命令:
ssh-keygen
终端会出现提示:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
# 可选择默认位置,例:/home/username/.ssh/id_rsa
Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
# 为私钥加密,设不设都行吧
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub. #生成公钥文件位置
The key fingerprint is:
7c:25:bd:54:f5:fc:60:c0:86:c1:a0:32:7d:8a:80:c4 root@debian
The key's randomart image is:
+--[ RSA 2048]----+
| .o.+..o..|
| o . . o o+ o.|
.......
2. 在远程服务器上配置公钥
cd .ssh
mv id_rsa.pub authorized_keys
chmod 600 authorized_keys #修改公钥为只有属主有读写权限(安全考虑)
chmod 700 ~/.ssh #修改.SSH目录为只有属主有读、写、执行权限(安全考虑)
3. 在本地配置私钥
3.1 从服务器上取回私钥到本地电脑
cat /home/username/.ssh/id_rsa #刚刚存储的密钥
- 复制显示的所有内容
- 在本地新建一个文本文件,可随便取名,不要后缀,将内容复制进去保存,这个文件即为私钥,一般放在
~/.ssh
路径下,注意备份。
3.2 在本地电脑为私钥文件设置权限
chmod 0600 id_rsa
4. 用SSH Key登录
ssh username@ip -p xxx -i ~/.ssh/xxx
其中,-p后的xxx
为端口,不填即为默认的22,-i后的~/.ssh/xxx
为本地私钥的路径。
PS:对于x2go用户,注意在Session preference中修改下面两个位置
x2go preference修改
管理员/sudoer操作
1. 开启SSH Key登录
ssh到服务器,执行:
vim /etc/ssh/sshd_config
找到下面两个参数并确认为yes
RSAAuthentication yes
PubkeyAuthentication yes
2. 重启ssh生效
/etc/init.d/ssh restart
3. 关闭SSH密码登录
用户都完成了key生成操作后,将sshd_config
中的这个参数注释取消并改为no:
“#”PasswordAuthentication yes
THX~