如何使用 SSH 无需密码登录远程主机?

如何使用 SSH 无需密码登录远程主机?

SSH 服务器正在远程主机上运行。远程主机的 IP 地址已知。

使用 NMAP 命令我们可以看到 SSH 服务正在开放的 22 端口上运行。

如何使用 ssh 客户端无需密码登录远程主机?

例子:ssh root@ip_address

如何了解用户帐户详细信息,例如该远程主机中存在的用户数量及其用户名?

hostname 命令给出了主机的名称。是否有命令可以知道远程主机中存在的用户名?

如何在不登录远程主机的情况下在远程计算机上执行 Linux 命令?

答案1

您可以设置 PKI。在主机上生成密钥对。它会提示您存储密钥的默认位置:

  • 公钥(扩展名 .pub)
  • 私钥(无扩展名)

通常它在~/.ssh/文件夹中。ssh-keygen -t rsa

并使用ssh copy-id更新您的服务器authorized_keys

ssh-copy-id root@ip_of_the server

或者,你可以将公钥的内容附加~/.ssh/id_rsa.pub到远程主机的~/.ssh/authorized_keys

答案2

使用 ssh 客户端无需密码登录远程主机,我认为您可以按如下方式检查问题:

  • 在您创建并将密钥 id_rsa.pub 添加到文件后,文件 ~/.ssh/authorized_keys 的权限(例如:用户 root --> 文件 /root/.ssh/authorized_keys),但是当您创建文件时它可能具有的权限是:-rw-rw-r-- 1 test1 test1 4 Aug 9 11:19 authorized_keys。使用命令将文件的权限更改为 600 后:chmod -R 600 authorized_keys

检查文件中的 root 用户权限/etc/sudoers。您可以NOPASSWD使用以下行在文件中添加用户或组选项:

  • 对于单个用户:root ALL=NOPASSWD: ALL
  • 对于团体:%supergroup ALL=(ALL) NOPASSWD:ALL

在防火墙中我认为您可以打开并允许 IP 远程到端口 22。

ufw allow from [IP Remote]  to any port 22

或者

ufw allow from any to any port 22

我希望它能帮助您实现无需密码的远程控制。

答案3

你不应该在这里问这些问题,未经许可登录是被禁止的。不过,你这个问题的水平还只是初级水平,所以黑客行为是无法讨论的 :)

答案4

如果你有 SSH 密钥,请执行以下步骤,但在此之前你应该配置你的 SSH 服务器配置

禁用密码登录

$ sudo nano /etc/ssh/sshd_config

sshd_config代码中编辑这行代码

PasswordAuthentication no
PermitRootLogin no
ChallengeResponseAuthentication no
UsePAM no

现在,root 和其他用户的密码登录已被禁用,之后重新启动 sshd 服务器

$ sudo systemctl restart sshd

你可以直接这样做

ssh-copy-id root@ip_of_the server
$ sudo systemctl restart sshd

或者

现在您应该在您的主目录中,例如/home/your-username创建.ssh文件夹并在.ssh文件夹内创建authorized_keys文件,按照以下命令操作

$ cd /home/your-username
$ mkdir .ssh
$ sudo nano .ssh/authorized_keys  ## Paste your public key here
$ ctrl + p
$ ctrl + x

.ssh现在您应该为&设置权限和所有者authorized_keys

.ssh

$ sudo chmod 700 .ssh
$ sudo chown your-username:your-username .ssh

authorized_keys

$ cd .ssh
$ sudo chmod 700 authorized_keys
$ sudo chown your-username:your-username authorized_keys

到这里我们就完成了,它应该可以工作了,要应用这个配置,你首先应该重新启动你的 SSH

$ sudo systemctl restart sshd

完成!完成!

相关内容