我正在尝试通过 SSH 连接到装有 Debian 的远程 VPS。在调试模式下运行 sshd,我发现:
Authentication refused: bad ownership or modes for directory /root
Run Code Online (Sandbox Code Playgroud)
我尝试设置权限,就像我在谷歌中找到的那样:
chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
但它仍然拒绝使用 pubkey 进行身份验证并要求输入密码,并在调试中显示相同的消息。我究竟做错了什么?
一旦禁用基于密码的登录,是否可以使用 ssh-copy-id?否则,是否有用于向用户添加授权公钥的实用程序,还是应该~/.ssh/authorized_keys手动编辑文件?
我必须承认,在某些情况下,我喜欢没有密码的服务器。一个典型的服务器容易受到任何物理访问它的人的攻击。因此,在某些情况下,物理锁定它是可行的,然后信任任何物理访问。
从理论上讲,当我实际到达这样的服务器时,我应该能够通过简单地输入root登录名来执行没有密码的管理任务,并且不应该要求我输入密码。这同样适用于用户帐户,但人们不会真正以物理方式访问它们。因此(偶尔)本地访问不需要系统密码。
在远程访问服务器时,无论是出于管理目的还是用户帐户,我都希望始终使用 SSH 私钥。为刚创建的帐户设置 SSH 密钥非常容易,因此(常规)远程访问不需要系统密码。
# user=...
#
# useradd -m "$user"
# sudo -i -u "$user"
$ keyurl=...
$
$ mkdir -p .ssh
$ curl -o .ssh/authorized_keys "$keyurl"
Run Code Online (Sandbox Code Playgroud)
结论是,理论上,对于这样的用例,我们不需要任何系统密码。所以问题是,我们如何配置系统和用户帐户以使其以一致且安全的方式发生。
我们如何确保无需密码即可在本地访问 root 帐户?我不认为我们可以使用,passwd -d因为这会使 root 访问过于宽松,非特权用户可以免费切换到 root,这是错误的。我们无法使用,passwd -l因为它会阻止我们登录。
请注意,本地访问仅与使用本地键盘的访问有关。因此,有效的解决方案必须不允许任何用户切换(无论是使用su或sudo)。
直到最近,上述解决方案还可以使用,但现在 SSH 开始检查锁定的用户帐户。passwd -d出于同样的原因,我们可能无法使用。我们不能使用,passwd -u因为它只是抱怨它会导致什么passwd -d。
这部分有一个使用虚拟密码的解决方法。
user=...
echo -ne "$user:`pwgen 16`\n" …Run Code Online (Sandbox Code Playgroud) 好的,所以我已经尝试了很多次,我确定这非常简单,但是:我正在尝试通过 Ubuntu 上的命令行使用我使用 key-gen 创建的 RSA 密钥对通过 SSH 连接到我的 VM(Centos6) .
我已经创建了密钥对并将公钥附加到 authorized_keys 文件并将权限更改为600. 在我将私钥 SCP 到 Ubuntu 并尝试使用它 SSH 后,我总是得到:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Run Code Online (Sandbox Code Playgroud)
我已经尝试了 3 次,但没有运气。我可以 ping 它,但我似乎无法弄清楚为什么它没有拿走我制作的钥匙。有什么建议?
我生成了一个密钥并将其复制到我的目标:
ssh-keygen
ssh-copy-id username@hostname
Run Code Online (Sandbox Code Playgroud)
我将密钥的位置保留为默认值,并且没有设置任何密码。
在那之后的一小段时间里,我能够在ssh username@hostname没有被提示输入密码的情况下,由于某种原因它停止工作。
我不知何故丢失了我的id_rsa.pub文件。我还有我的id_rsa档案。如何从私钥恢复公钥?
(这个问题是在ssh-copy-id报告“错误:未找到身份”而ssh-keygen报告“/root/.ssh/id_rsa已经存在”之后出现的。ls ~/.ssh指出问题是有id_rsa但没有id_rsa.pub。我找到了解决方案,但它被埋在了底部Ubuntu 支持论坛上的一篇长篇文章。)
我需要使用 Duplicity 将服务器备份到我的计算机:
duplicity /etc sftp://backup@my.dynamic.ip.address//home/backup
Run Code Online (Sandbox Code Playgroud)
在此之前,我需要通过执行以下操作来允许无密码访问:
$ ssh-keygen
$ ssh-copy-id backup@my.dynamic.ip.address
$ ssh backup@my.dynamic.ip.address
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何在生成的公钥中将命令限制为仅此 SFTP 传输?
command="restrict to sftp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…
并且由于我使用的是动态 IP 地址,因此每次 IP 更改时我如何克服“丢失已知主机”的问题?
我需要自动化一些身份部署,最好使用ssh-copy-id.
我正在尝试通过 stdin 提供密码,这可以ssh通过使用-S标志来实现。我知道,我可以给额外的选项来ssh使用-o的标志ssh-copy-id。然而有此标志的没有使用的例子在手册页命令。
所以我尝试ssh-copy-id使用以下方法通过 stdin传递 SSH 密码:
$# echo $TMP_PASS | ssh-copy-id -p2222 -i key.pub user@host -o "-S"
Run Code Online (Sandbox Code Playgroud)
但我得到的只是:
/bin/ssh-copy-id: ERROR: command-line: line 0: Bad configuration option: -s
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过 stdin 提供密码,这可以
ssh通过使用-S标志来实现。
这个说法是错误的。我实际上已经从sudo男人那里读到了这面旗帜;
我发出ssh username@db2workgoup -n "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys"然后检查密钥是否存储在authorized_keys文件中。但是 ssh 仍然要求输入密码。我在我们公司的其他服务器上使用了同样的方法,没有任何问题。
有人可以帮助我在没有密码提示的情况下 ssh 吗?
/var/log/messagesec 9 11:09:53 db2workgroup automount[3506]: update_negative_cache: key ".user.ini" not found in map.从我尝试登录时起就有条目。
输出 ssh -vvv
radek:~ radek$ ssh -vvv root@db2workgroup
OpenSSH_5.2p1, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh_config
debug2: ssh_connect: needpriv 0
debug1: Connecting to db2workgroup [10.0.0.22] port 22.
debug1: Connection …Run Code Online (Sandbox Code Playgroud)