11

如何在Debian 9配置SSH密钥免密码登录

 1 year ago
source link: https://www.myfreax.com/how-to-set-up-ssh-keys-on-debian-9/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
ssh

如何在Debian 9配置SSH密钥免密码登录

SSH支持各种身份验证机制。最常见的两种是基于密码和基于公钥的身份验证。公钥的身份验证是基于数字的签名

Updated At 27 Sep 2022 6 min read
By myfreax
如何在Debian 9配置SSH密钥免密码登录

SSH全称Secure Shell,是用于在客户端和服务器之间创建安全连接的网络协议。使用SSH,您可以在远程计算机上运行命令,创建隧道tunnels,端口转发等。

SSH支持各种身份验证机制。最常见的两种是基于密码和基于公钥的身份验证。公钥的身份验证是基于数字的签名,并且比传统的密码身份验证更安全,更方便。

如果你在运行ssh命令遇到错误ssh command not found。ssh命令未找到可以运行sudo apt-get install openssh-client命令安装ssh客户端。

本教程介绍如何在Debian 9配置SSH密钥免密登录。我们还将向您展示如何设置基于SSH密钥的身份验证以及如何在不输入密码的情况下连接到远程Linux服务器。

很有可能您的Debian 9客户端计算机上已经存在SSH密钥对。 如果生成新的密钥对,则旧的将被覆盖。

如果需要检查密钥文件是否存在,请运行ls命令ls -l ~/.ssh/id_*.pub检查是否存在。

如果命令返回类似No such file or directoryno matches found的信息,则表明当前用户没有SSH密钥。

您可以继续下一步并生成SSH密钥。否则,如果您具有SSH密钥对,则可以使用现有的密钥对,也可以备份旧密钥并生成新的密钥对。

生成SSH密钥的命令是ssh-keygen。你可以不使用任何参数直接生产SSH私钥与公钥。也可以使用您的电子邮件地址作为注释来生成新的4096位SSH密钥对。

ssh-keygen
ssh-keygen -t rsa -b 4096 -C "[email protected]"

系统将提示您指定文件名Enter file in which to save the key (/home/myfreax/.ssh/id_rsa):。默认位置和文件名应该适合大多数用户。 按Enter接受并继续

接下来,系统会要求您输入安全密码或者称为密码短语Enter passphrase (empty for no passphrase):。密码短语增加了一层额外的安全性。

如果您设置密码短语,则每次使用该密钥登录到远程计算机时,系统都会提示您输入密码短语。如果您不想设置密码短语,请按Enter

如果你没有什么特别的要求你在运行ssh-keygen命令,全部直接回车Enter键使用默认值创建SSH密钥即可。

要验证是否生成了新的SSH密钥对,请运行命令ls ~/.ssh/id_*查看SSH密钥是否存在。如果存在说明您已经在Debian Linux计算机成功生成了SSH密钥。

/home/myfreax/.ssh/id_rsa 
/home/myfreax/.ssh/id_rsa.pub

将公钥复制到远程服务器

现在您本地Debian 9计算机有了SSH密钥,下一步是将公用密钥复制到要管理的远程服务器。

将公钥复制到服务器的最简单和建议的方法是使用ssh-copy-id命令。运行命令ssh-copy-id server_username@server_ip_address即可复制远程服务器。

server_username是远程服务器用户的名称,server_ip_address是你的服务器IP地址。系统将提示您输入远程用户密码。

通过身份验证后,公钥~/.ssh/id_rsa.pub将追加到远程用户~/.ssh/authorized_keys文件中,然后ssh-copy-id将会退出。

并且提示你可以运行命令ssh 'username@server_ip_address'登录到远程服务器。

ssh-copy-id remote_username@server_ip_address
remote_username@server_ip_address's password:

如果由于某些原因您的本地计算机上没有ssh-copy-id实用程序,请使用以下命令复制公钥。

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.

完成上述步骤后,您应该能够免密码登录到远程服务器。要测试它,请尝试通过SSH登录到服务器。

如果您尚未设置私钥的密码短语,则会立即登录。 否则,将提示您输入密码。

ssh remote_username@server_ip_address

禁用SSH密码身份验证

禁用密码身份验证会为服务器增加一层安全保护。在禁用SSH密码身份验证之前,请确保您可以免密码登录服务器,并且你登录用户具sudo权限。

首先登录到您的远程服务器,然后使用你喜欢的文本编辑器打开SSH配置文件/etc/ssh/sshd_config。在本教程中,我们将使用vim打开文件

使用vim搜索PasswordAuthentication,ChallengeResponseAuthentication,UsePAM指令并改为no。

完成后,保存文件并运行命令sudo systemctl restart ssh重新启动SSH服务。此时,基于密码的身份验证已被禁用,你将不能使用密码登录。

注意:禁用密码登录后,请保管好你的SSH密钥文件,如果VPS提供商提供VNC远程控制可以很容易恢复,如果没有就........。

ssh sudo_user@server_ip_address

sudo vim /etc/ssh/sshd_config #在你的服务器上

sudo systemctl restart ssh #在你的服务器上
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
/etc/ssh/sshd_config

我们向您展示如何生成新的SSH密钥对以及如何配置基于SSH密钥免密码登录。您可以使用同一密钥来管理多个远程服务器。

您还学习了如何禁用SSH密码身份验证以及如何为服务器添加额外的安全性。

默认情况下,SSH侦听端口22。更改默认SSH端口可降低自动攻击的风险。 为了简化您的工作流程,请使用SSH配置文件定义您的所有SSH连接。

如果您有任何问题或反馈,请随时发表评论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK