我正在尝试使用 SSH 从本地计算机连接到远程计算机。我已完成以下步骤:
- 我在本地机器(ubuntu 20.04 LTS)上打开了终端并输入
ssh-keygen -b 4096
(路径:~) - 我每一步都按回车键,直到生成密钥(无密码)
- 然后就
.ssh
创建了一个文件。然后我做了cd .ssh/
- 通过输入
ls -la
命令,我的私钥和公钥就显示出来。然后我把cat id_rsa.pub
公钥复制到剪贴板 - 我转到我的虚拟机,该虚拟机应该充当远程虚拟机的角色(Kali)
- 我打开终端并执行
mkdir .ssh
(路径:〜)然后cd .ssh/
- 然后我将
nano authorized_keys
之前复制到剪贴板的公钥粘贴到其中,保存文件并退出。 - 然后我回到原来的(本地)机器,将目录更改为主目录(~),然后输入
ssh [my_remote_hostname]
但这是我在终端得到的结果:ssh: Could not resolve hostname kali: Temporary failure in name resolution
我错过了什么?我做错了什么?
答案1
如果您想使用远程主机名通过 ssh 连接到一台机器,您需要在 .ssh 目录中的配置文件中定义远程主机名的 IP 地址。
vi ~/.ssh/config
Host [hostname]
HostName [ip_address]
PreferredAuthentications publickey
IdentityFile [path_to_ssh_key]
User [username]
Port [port]
AddKeysToAgent yes
ForwardAgent yes
如果您想使用 ssh 密钥 ssh 到某台机器,则 HostName、PreferredAuthentcations 和 IdentityFile 是必需的。User、Port、AddKeysToAgent 和 ForwardAgent 不是必需的。
答案2
要连接远程服务器,首先需要安装开放的 ssh 服务器。
- 用于
sudo apt-get openssh-server
在远程服务器上安装 openssh-server。
- 用于
现在您需要更改 openssh-server 的配置。
- 文件名是 sshd_config,位于 /etc/ssh/sshd_config。
- 需要 root 权限才能访问此目录
现在您需要允许用户和密码连接(第一次连接到远程机器)。
- 在 sshd_config 上找到将
#PasswordAuthentication
其更改为PasswordAuthentication yes
小心创建密钥后连接远程主机建议禁用此选项因为加密密钥比登录密码更安全。 - 您可以使用现有用户或创建一个新用户。
- 从您的主机到远程机器的登录命令是 ssh existuser@ip。
- ssh服务器会要求输入密码,该密码是用户密码。
#Port 22
如果您想更改 ssh 端口,您可以通过从sshd_config 中删除 # 并写入您想要使用的另一个端口号来执行此操作。
- 在 sshd_config 上找到将
首次访问远程服务器后,您可以使用加密密钥连接服务器。
- 在您的主机上运行此命令
ssh-keygen -t <encryption type>
- 然后它将生成一个私钥和一个公钥,将您的公钥复制到 ssh 服务器上的 authorized_keys 文件中。- 您可以按照以下语法手动或使用 ssh-copy-id 命令复制公钥
ssh-copy-id -i ~/.ssh/<keyname> user@hostip
- 将您的公钥添加到authorized_keys文件后,该文件必须位于此路径上的远程ssh服务器中
/<user-home-folder>/.ssh/authorized_keys
。 - 现在您必须启用在 sshd_config 上使用 authorizedkey 连接的选项并将其更改
#PubkeyAuthentication yes
为PubkeyAuthentication yes
(只需删除 #sine)。 - 现在您可以尝试使用生成的私钥连接服务器,检查其是否正常工作后,您可以删除使用密码连接服务器的选项作为安全步骤。
- 您可以按照以下语法手动或使用 ssh-copy-id 命令复制公钥
- 在您的主机上运行此命令
如果您想提高 ssh 服务器的安全性,这里有一些包含更多详细信息的链接:
它应该可以解决问题,如果您在此解释过程中遇到任何问题,您可以在评论中询问更多信息,我会帮助您。