machineA
我正在尝试为machineB
我的用户设置无密码登录,david
该用户已经退出并且工作正常。这就是我所做的:
david@machineA:~> ssh-keygen -t rsa
...
david@machineB:~> ssh-keygen -t rsa
...
machineA
为machineB
用户生成身份验证密钥david
。之后我将id_rsa.pub
(/home/david/.ssh/id_rsa.pub)
密钥复制到文件密钥machineA
中。machineB
authorized_keys
(/home/david/.ssh/authorized_keys)
然后我回到 machineA 登录屏幕并运行以下命令,它无需输入密码即可工作:
david@machineA:~> ssh david@machineB
现在,我创建了一个没有任何密码的新用户machineA
,并且machineB
仅通过运行此命令来创建useradd golden
。现在我想从该golden
用户无密码 ssh 到machineB
from machineA
。我做了与上面相同的步骤,但它不起作用。
david@machineA:~> sudo su - golden
golden@machineA:~> ssh-keygen -t rsa
.......
david@machineB:~> sudo su - golden
golden@machineB:~> ssh-keygen -t rsa
.......
然后我将id_rsa.pub
黄金用户的密钥从机器 A 复制到机器 Bauthorized_keys
文件。当我尝试 ssh 时,它给了我:
golden@machineA:~> ssh golden@machineB
Connection closed by 23.14.23.10
怎么了?它不仅仅适用于我通过此命令手动创建的黄金用户useradd
。我运行的是 Ubuntu 14.04。我是否需要为我创建的这个手动用户启用任何设置?
更新:
golden@machineA:~$ pwd
/home/golden
golden@machineA:~$ ls -lrtha
total 60K
-rw------- 1 golden golden 675 Nov 22 12:26 .profile
-rw------- 1 golden golden 3.6K Nov 22 12:26 .bashrc
-rw------- 1 golden golden 220 Nov 22 12:26 .bash_logout
drwxrwxr-x 2 golden golden 4.0K Nov 22 12:26 .parallel
drwxr-xr-x 2 golden golden 4.0K Nov 22 12:34 .vim
drwxr-xr-x 7 root root 4.0K Dec 22 11:56 ..
drwx------ 2 golden golden 4.0K Jan 3 15:00 .ssh
-rw------- 1 golden golden 17K Jan 3 15:04 .viminfo
drwx------ 5 golden golden 4.0K Jan 3 15:04 .
-rw------- 1 golden golden 4.2K Jan 3 16:32 .bash_history
golden@machineB:~$ pwd
/home/golden
golden@machineB:~$ ls -lrtha
total 52K
-rw------- 1 golden golden 675 Dec 22 15:10 .profile
-rw------- 1 golden golden 3.6K Dec 22 15:10 .bashrc
-rw------- 1 golden golden 220 Dec 22 15:10 .bash_logout
drwxr-xr-x 6 root root 4.0K Jan 3 14:26 ..
-rw------- 1 golden golden 11K Jan 3 15:21 .viminfo
drwx------ 2 golden golden 4.0K Jan 3 15:21 .ssh
drwx------ 6 golden golden 4.0K Jan 3 15:21 .
-rw------- 1 golden golden 2.9K Jan 3 15:27 .bash_history
authorized_keys 文件的路径位于 machineB 上
/home/golden/.ssh/authorized_keys
由于详细日志非常大,所以我将其粘贴到此处的要点上:
https://gist.github.com/TechGeeky/cf49052039313e4c654183bf9eafd97c
另一个更新:
在 machineBauth.log
文件中,下面是我从 machineA 运行此命令ssh -vvv golden@machineB
登录时看到的内容
Jan 3 17:56:59 machineB sshd[25664]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Jan 3 17:56:59 machineB sshd[25664]: pam_access(sshd:account): access denied for user `golden' from `machineA'
Jan 3 17:56:59 machineB sshd[25664]: pam_sss(sshd:account): Access denied for user golden: 10 (User not known to the underlying authentication module)
Jan 3 17:56:59 machineB sshd[25664]: fatal: Access denied for user golden by PAM account configuration [preauth]
答案1
useradd
是一个低级实用程序。adduser
会是一个更好的选择。在这里,您的问题是,默认情况下useradd
创建一个没有 shell 的用户。和ssh
如果您连接到无外壳帐户,您将无法执行任何操作。
解决方案是为您的用户添加一个 shell:
chsh -s /bin/sh golden