# Linux配置ssh密钥对实现免密登录
如下操作可能不适用于惯用xshell的用户,特别是windows用户,几乎对windows用户没啥大用(除非他们摆脱xshell,然而我用windows时都不能摆脱xshell)。对于Mac/Linux下惯用终端连接服务器的用户可能相对地提高效率。
# Linux/Mac
在本地终端中执行
ssh-keygen,生成密钥对(私钥和公钥),(除了修改Enter file in which to save the key (/home/xxxx/.ssh/id_rsa):,建议改为/home/xxxx/.ssh/服务器名_rsa,方便区分)一路回车 (Enter)。假如1中~/.ssh下生成了amax_rsa.pub和amax_ras文件
使用
ssh-copy-id自动将公钥上传并配置到 服务器上,ssh-copy-id -i ~/.ssh/amax_rsa.pub User@HostName -p Port使用 SSH 配置文件管理会话,本地
vim ~/.ssh/config:Host amax HostName 233.233.233.233 Port 2333 User myvps IdentityFile "~/.ssh/amax_rsa" IdentitiesOnly yes然后赋予权限
chmod 600 ~/.ssh/config终端直接
ssh amax实现免密登录。甚至可以方便执行sftp amax,来进行服务器间的文件传输。这种配置也方便vscode+remote ssh打开远程服务器。
# Windows
windows下的免密配置:<https://segmentfault.com/a/1190000023054090 (opens new window)>
# 分享私钥以在新设备上免密链接
设备1已经完成免密操作,直接拷贝私钥文件到设备2,SSH配置文件写入信息,可以直接完成免密操作。
但是需要将拷贝后的私钥文件权限修改chmod 600 xxx_rsa
# 问题
在配置密钥对后,若还需要输入密码,见https://blog.csdn.net/silentwolfyh/article/details/83656101 (opens new window):
尝试修改配置/etc/ssh/sshd_config:
#禁用root账户登录,如果是用root用户登录请开启
PermitRootLogin yes
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 有了证书登录了,可以选择禁用密码登录,但此处仍然保留。
PasswordAuthentication yes