1. Posts/

SSH 免密登录

·阅读预计 2 分钟
SSH 记录
小北
作者
小北
目录

通常通过密码 ssh 登录经常需要每次输入用户密码,频繁地输入密码来登录确实低效且有被暴破的风险,使用 ssh key 能更安全优雅的连接远程主机,macOS 自带的终端,Windows 10或11可使用自带的 Powershell 或者 Windows Terminal 均可。

1. 在本地创建 SSH 密钥对 #

ssh-keygen

默认情况下,创建一个 3072 位的 RSA 密钥对,将存储在 ~/.ssh 用户主目录中的目录中。按照以下操作即可:

username@BEIs-MacBook-Air ~ % ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa): ##.ssh存放在用户目录下,username是当前用户的用户名,直接按Enter按默认位置保存
/Users/username/.ssh/id_rsa already exists. ##因为我之前创建过,所以会提示该目录已存在
Overwrite (y/n)? y ##上述情况下,会询问是否确定覆盖,当心输入y会确定覆盖已有的密钥
Enter passphrase (empty for no passphrase): ##输入私钥密码,可留空直接按Enter
Enter same passphrase again: ##再输一遍私钥密码,可留空直接按Enter
Your identification has been saved in /Users/username/.ssh/id_rsa ##私钥位置
Your public key has been saved in /Users/username/.ssh/id_rsa.pub ##共钥位置
The key fingerprint is:
SHA256:+47O5+hkXcRFCde397wfapnIhPXLXAMS5fIEHr7zzrj username@BEIs-MacBook-Air.local
The key's randomart image is:
+---[RSA 3072]----+
|           .++o.=|
|           ..oooo|
|          . .. ..|
|         . .E  . |
|        S o.    .|
|         o.+.. o |
|        + .++.ooo|
|       + =.o*+=o+|
|       o*+=.=X*.+|
+----[SHA256]-----+
username@BEIs-MacBook-Air ~ % 

2. 在服务器上添加公钥 #

cat ~/.ssh/id_rsa.pub | ssh root@192.168.1.101 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

替代192.168.1.101为你自己的服务器地址,执行上述命令,

Are you sure you want to continue connecting (yes/no)? ##输入yes

再输入一次root用户的密码,就可以将生成的公钥追加到服务器 authorized_keys 文件里了。

3. 禁用密码身份验证 #

经过前两步的操作,应该就可以实现不用输密码即可登录了。此时密码登入仍然有效,验证免密OK后,可以继续禁用密码身份验证以提高安全。

登录服务器执行 vim /etc/ssh/sshd_config 编辑ssh的配置文件,寻找 PasswordAuthentication

#PasswordAuthentication yes

可能会被注释掉。通过删除该行开头的 # 来取消注释该行,并将值设置为 no 即可:

PasswordAuthentication no

最后执行 sudo systemctl restart ssh 重启ssh进程即可生效!

4.问题排除 #

要确保客户端和服务端的密钥文件及其文件夹是可被 SSH 进程可读的,如需可通过以下命令修改权限:

chmod 755 authorized_keys
chmod 700 id_rsa
chmod 700 id_rsa.pub

出现以下报错,ssh-keygen -R IP 或者删除用户文件夹 ~/.ssh 下的 known_hosts 文件即可

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

安装

sudo apt install vim

Related

MarkDown 语法笔记
·阅读预计 2 分钟
MarkDown 笔记
Hello Hugo
·阅读预计 1 分钟
Mac 安装 brew
·阅读预计 1 分钟
Homebrew Mac 笔记