Linux和Mac关闭ssh的密码登录,限制使用私钥登录

在当今的网络环境中,安全性是一个不容忽视的话题。尤其是对于那些暴露在公网的服务器来说,采取额外的安全措施变得尤为重要。SSH(Secure Shell)是一种广泛使用的远程登录协议,允许用户安全地访问和管理远程服务器。默认情况下,SSH支持两种认证方式:密码认证和基于密钥的认证。然而,密码认证方式较为脆弱,容易受到暴力破解攻击。为了增强安全性,推荐关闭SSH的密码登录,仅允许使用私钥登录。以下是在Linux和MacOS下实现此目的的步骤。

Linux

上传密钥至目标服务器

首先,确保你已经生成了SSH密钥对,并将公钥上传到目标服务器上。使用以下命令:

ssh-copy-id -f -i /path/to/pub/file -p port user@domain.or.ip

修改sshd配置

接下来,修改SSH服务器的配置文件/etc/ssh/sshd_config,禁用密码登录并启用基于密钥的登录。

手动修改

使用nanovim编辑器打开配置文件:

sudo nano /etc/ssh/sshd_config
# 或者
sudo vim /etc/ssh/sshd_config

找到以下行并进行修改:

#PasswordAuthentication yes
PasswordAuthentication no

确保PubkeyAuthentication选项被设置为yes

PubkeyAuthentication yes

使用sed修改

或者,可以使用sed命令直接修改配置:

sudo sed -i 's/^#*PasswordAuthentication[[:space:]]*.*$/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#*PubkeyAuthentication[[:space:]]*.*$/PubkeyAuthentication yes/' /etc/ssh/sshd_config

重启sshd服务

修改配置后,需要重启SSH服务以应用更改:

sudo systemctl restart sshd

MacOS

MacOS的步骤与Linux类似,但配置文件的位置可能略有不同。

上传密钥至目标服务器

与Linux相同,使用ssh-copy-id命令上传公钥。

修改sshd配置

MacOS中的配置文件通常位于/private/etc/ssh/sshd_config

手动修改

使用nanovim

sudo nano /private/etc/ssh/sshd_config
# 或者
sudo vim /private/etc/ssh/sshd_config

然后,按照Linux的指示进行修改。

使用sed修改

在MacOS上,sed命令的使用略有不同,需要添加'' -e进行编辑:

sudo sed -i '' 's/^#*UsePAM[[:space:]]*.*$/UsePAM yes/' /private/etc/ssh/sshd_config
sudo sed -i '' '/^#*ChallengeResponseAuthentication[[:space:]]*.*$/d' /private/etc/ssh/sshd_config
echo "ChallengeResponseAuthentication no" | sudo tee -a /private/etc/ssh/sshd_config > /dev/null
sudo sed -i '' 's/^#*PasswordAuthentication[[:space:]]*.*$/PasswordAuthentication no/' /private/etc/ssh/sshd_config
sudo sed -i '' 's/^#*kbdInteractiveAuthentication[[:space:]]*.*$/kbdInteractiveAuthentication no/' /private/etc/ssh/sshd_config

重启sshd服务

MacOS上重启SSH服务的命令为:

sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd
# 或
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 

通过上述步骤,你可以有效地提升服务器的安全性,避免潜在的安全威胁。