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
,禁用密码登录并启用基于密钥的登录。
手动修改
使用nano
或vim
编辑器打开配置文件:
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
。
手动修改
使用nano
或vim
:
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
通过上述步骤,你可以有效地提升服务器的安全性,避免潜在的安全威胁。