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
完成!完成!