远程服务器设置SSH Key免密登录

为了远程服务器的安全使用及远程连接方便,设置SSH Key免密码登录。
(分为用户操作和管理员/sudoer操作)

用户操作步骤

1. 在服务器/本地上生成密钥对

本地更佳,可以一个钥匙配很多对。
用ssh远程连接到服务器后,执行命令:

ssh-keygen -t rsa -b 4096 (指定长度,增加安全性)

终端会出现提示:

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. 在远程服务器上配置公钥

不管在哪生成,公钥在服务器端,私钥在本地端,可以scp传输。

cd .ssh  (或先mkdir ~/.ssh)
cat 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
注意注意!!这个很关键,不然vscode登不上去。

RSAAuthentication yes
PubkeyAuthentication yes

2. 重启ssh生效
/etc/init.d/ssh restart
3. 关闭SSH密码登录

用户都完成了key生成操作后,将sshd_config中的这个参数注释取消并改为no:

“#”PasswordAuthentication yes

THX~

你可能感兴趣的:(远程服务器设置SSH Key免密登录)