it-swarm.cn

如何强制ssh客户端仅使用密码身份验证?

如果我使用例如来自Ubuntu 11.04的pubkey auth,如何将ssh客户端设置为仅对服务器使用密码auth? (由于测试服务器上的密码才需要,我默认使用密钥登录)

我找到了一个方法:

mv ~/.ssh/id_rsa ~/.ssh/id_rsa.backup
mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.backup

现在提示输入密码,但是有什么正式方法吗?

414
LanceBaynes

我最近也需要这个,并想出了这个:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no example.com

您需要确保未将客户端配置为禁止密码身份验证。

636
scoopr

我发现了用于此目的的快捷方式:

ssh user:@example.com

注意冒号(:),然后输入空密码。

174
Halil Özgür

与scoopr发布的方法一样,您可以在ssh客户端配置文件中设置每个主机选项。

在你的 .ssh目录,创建一个名为config的文件(如果尚不存在),并将权限设置为600,然后您可以创建以以下开头的部分

Host <some hostname or pattern>

然后设置每个主机的选项,例如,

Host bob.specific.foo
user fred

Host *.home.example
user billy
port 9191

这样你就可以

Host server.to.test
PubkeyAuthentication=no

在那个文件中,然后简单地

ssh server.to.test

然后该选件将被拿起。

38
EightBitTony

我最近需要这个,但是上面的所有选项都不起作用,ssh -v显示了通过-o开关传递的命令行选项被~/.ssh/config文件中指定的值所覆盖。

起作用的是:

ssh -F /dev/null <username>@<Host>

ssh手册页中:

 -F configfile
     Specifies an alternative per-user configuration file.  If a
     configuration file is given on the command line, the system-wide
     configuration file (/etc/ssh/ssh_config) will be ignored. The default 
     for the per-user configuration file is ~/.ssh/config.

归功于此答案: 如何使ssh忽略.ssh/config?

14
adeelx

我尝试了其中一些答案,但是ssh -v一直显示我的公钥被从主目录中拉出。但是,指定伪造的身份文件对我有用:

ssh -i /dev/null Host

我必须永久执行此操作(要解决APC机架式PDU中损坏的SSH服务器的问题-如果您关心安全性,请远离far远离这些东西-因此我最终将该选件放入我的配置文件:

Host apc1 apc2
KexAlgorithms +diffie-hellman-group1-sha1
IdentityFile /dev/null
6
miken32

并且请确保没有BatchMode=yes在.ssh/config中有效。否则,您将没有机会获得交互式密码提示。

2
Gunnar Tiedt

我可能是世界上唯一一个遇到此问题的人,但是我从另一个正在运行的操作系统(在cygwin Shell中为Windows中的choco ssh)通过which ssh看到了ssh

所以解决方案是

 /usr/bin/ssh [email protected].com

注意完整路径。我运行cyg-get openssh后就这样做了

1
Jonathan

@scoopr和@HalilÖzgür的答案对我不起作用。

这为我工作:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]

来源: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-Host-key-checking.html

1
shrx