如何在Linux中设置无密码SSH登录
如何建立SSH连接,无需进入远程计算机密码。
通常,使用密码登录可用于快速传输各种机器之间的文件。
环境准备
如果我们有两台机器,客户端和远程机器
几乎所有的工作都将从客户端计算机中完成,该计算机将用于连接到远程设备。
两个设备都是Ubuntu,具有以下IP地址
- "客户端"机器具有IP"192.168.1.20",其中用户名
TUTS
。 - "远程"机器具有IP 192.168.1.30,其中包含用户名
Hendadel
。
开始前一件事,请确保使用以下命令对两个计算机进行最新:
sudo apt update sudo apt upgrade
设置无密码SSH登录
步骤1.从客户端计算机,确保使用下一个命令之前生成的ssh键。
ls -al ~/.ssh/id_*.pub
如果我们在先前没有生成了SSH密钥,则我们将获得"没有这样的文件或者目录"消息。
否则,如果存在,我们将快速获取可用的键。
步骤2.由于我们之前没有生成的SSH键,则使用以下命令生成新的SSH密钥是?
ssh-keygen -t rsa -b 4096
从客户端机生成ssh
通常,上一个命令将在两个不同的文件中生成新的两个SSH键。
这两个文件都存储在当前用户主目录下名为".ssh"的隐藏目录中。
我们可以找到存储在名为ID_DSA的文件中的私钥和名为ID_DSA.PUB的文件中的另一个公钥。
此外,我们将要求我们添加用于保护生成键的密码短语,并且我们可以在通过SSH连接时使用它。
但是我们可以按"输入"按钮不使用一个。
步骤3.现在我们可以列出.ssh目录的内容以确保创建了两个密钥。
ls -l /home/tuts/.ssh/
从客户端计算机验证都会创建两个键
步骤4.此外,我们可以确保文件使用以下命令在其内部有一个密钥:
ssh-keygen -lv
步骤5.预览公钥文件的内容。
cat .ssh/id_rsa.pub
从客户端机显示SSH密钥文件内容
步骤6.现在从远程计算机,请确保安装了SSH。
如果未安装,则可以使用以下命令。
sudo apt install ssh
步骤7.返回客户端计算机,连接到远程计算机,并创建名为.ssh的新目录。
sudo ssh remote_machine_username@remote_machine_IP mkdir -p .ssh
确保将Remote_machine_username替换为具有远程IP的Real用户名和Remote_machine_ip。
从客户端计算机创建远程计算机上的目录
步骤8.接下来,让我们从客户机计算机复制到远程计算机之前生成的公共SSH密钥。
如果将公钥粘贴到名为"授权_keys"的文件中,则会有帮助。
强烈建议不要更改文件名,因为当我们要建立SSH连接时,操作系统将检查的第一个文件是"授权_keys"文件。
如果系统没有找到该文件,则将要求我们输入用户名和密码以便能够登录远程计算机。
sudo cat .ssh/id_rsa.pub | ssh remote_machine_username@remote_machine_IP 'cat >> .ssh/authorized_keys'
从客户端计算机将SSH键复制到远程计算机
步骤9.从远程计算机,请确保使用Name Authorized_keys成功复制公钥。
ls .ssh/ cat .ssh/authorized_keys
从远程计算机检查SSH密钥文件已成功复制
步骤10.现在从客户端计算机,让我们尝试在没有用户名和密码的情况下建立SSH连接。
ssh remote_machine_username@remote_machine_IP
我们可以注意到,我们将不会被要求输入用户名,也不要求密码。
禁用密码身份验证
要使用公钥禁用密码身份验证,首先,需要从远程计算机编辑SSH配置文件并禁用密码验证选项。
以下是这样做的步骤。
步骤1.从远程计算机,使用我们喜欢的编辑器打开SSH配置文件。
vi /etc/ssh/sshd_config
从远程机器打开SSH配置文件
步骤2.滚动到SSH配置文件的末尾,然后添加下几行以禁用密码身份验证:
RSAAuthentication yes PubkeyAuthentication yes PasswordAuthentication no UsePAM no ChallengeResponseAuthentication no
从远程计算机编辑SSH配置文件
步骤3.保存并退出文件。
步骤4.最后,重新启动SSH服务并尝试再次从客户端计算机与客户端计算机建立新连接。