sshクライアントにパスワード認証のみを使用させるにはどうすればよいですか?


375

たとえば、Ubuntu 11.04からpubkey認証を使用する場合、サーバーに対してパスワード認証のみを使用するようにsshクライアントを設定するにはどうすればよいですか?(サーバーでパスワードをテストするために必要です。デフォルトではキーでログインします)

私は方法を発見しました:

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

そして今、私はパスワードの入力を求められますが、正式な方法はありますか?

回答:


579

私も最近これを必要としており、これを思いつきました:

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

クライアントがパスワード認証を許可しないように設定されていないことを確認する必要があります。


4
私は、Kerberos認証が自動化のために使用された環境の中で表示されるようにパスワードプロンプトを強制するために必要な、と同様のコマンドは、特定の状況で私のために働いていた: ssh -o GSSAPIAuthentication=no example.com
IllvilJa

21
いいね -o PubkeyAuthentication=no私の場合だけで十分でした。
-mivk

10
友達osxラップトップにsshするには、-o PreferredAuthentications=keyboard-interactive -o PubkeyAuthentication=no 代わりに使用する必要がありました:代わりに
-guido

4
これは私にはうまくいきません。それは言い続けます:許可が拒否されました(公開鍵)。パスワードプロンプトは表示されません。
reinierpost

7
@reinierpostこれはおそらく、ssh ホストが無効になっているためPasswordAuthenticationです。実際、パスワード認証を無効にすることがホストで正しく機能することをテストしたかったので、私はここにいます。
ラバーダック

169

この目的のためのショートカットを発見しました:

ssh user:@example.com

コロン(:)とその後の空のパスワードに注意してください。


2
ドキュメントはまだありません。実際、OpenSSHのソースコードを無駄に読み飛ばしました(その解析段階はかなり不可解であり、ここの朝です:))。私の最初の動機:あなたは空のパスワードを与えれば、多くのクライアントがパスワードの入力を求め、例えばmysql -u user -p
ハリルÖzgür

43
少なくとも私の場合は、これはもう機能しないようです。sshクライアントは盲目的に無関係の秘密鍵を試行して、新しくインストールされたサーバーを認証し、パスワードを要求せずに最大試行回数に達したため拒否され続けました。この最初の接続にパスワード認証を強制するには、-o PreferredAuthentications=password構文を使用する必要がありました。コロントリックは目立った効果がありません。したがって、このトリックは試してみる価値があるかもしれませんが、一貫した動作としてそれに頼るべきではありません。
-WhiteWinterWolf

2
@HalilÖzgür:悲しいニュース、覚えて入力するのがずっと簡単だっ ;)!
WhiteWinterWolf

3
WhiteWinterWolfが言ったように、@ Qualcunoは、残念ながら一部のプラットフォームでは動作しません。
ハリルÖzgür16年

2
PasswordAuthenticationがssh_configファイルにないことを確認してください!
-Braiam

32

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

オプションが選択されます。


この答えをありがとう。私は自分のエントリを作成し~/.ssh/configて、コメントを追加PubkeyAuthentication no
クレイグロンドン

2
私にはうまくいきません。
reinierpost

11

私は最近これを必要としましたが、上記のオプションはどれも機能せずssh -v-oスイッチを介して渡されたコマンドラインオプションが~/.ssh/configファイルで指定された値によって上書きされることを示しました。

うまくいったのはこれでした:

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

sshmanページから:

 -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を無視させるにはどうすればよいですか?


1
これは質問に答えません。いつでもキーをエージェントに保存することができ、あなたのアプローチはクライアントがそれらを使用することを妨げません。
Jakuje

ええと、私が答えで言及した問題だけでなく、その問題をどのように修正ますか?
adeelx

2
また、(質問のように)標準の場所にキーがある場合は、構成が存在するかどうかに関係なく使用されます。最初の回答で述べた方法のいずれかを使用します。
Jakuje

あまり真実ではありません。Lubuntu14.04でテストしましたが、標準の場所にキーを置いていても、~/.ssh/configを指定するとキーは使用されません-F /dev/nullssh -v出力はこの場合に役立ちます.ssh configにcatch-allエントリがあるため*-o以前の回答のようにスイッチを介して渡されたオプションを尊重するのではなく、公開キーを使用することを選択することを明確に示しています。
adeelx

1
標準の場所は~/.ssh/id_rsa、マニュアルページに記載されているとおりです。これらのパスはクライアントにハードコードされています。テストするときに正しいユーザーを指定してください。
Jakuje

4

これらの回答のいくつかを試しましたがssh -v、公開キーがホームディレクトリから引き出されていることを示し続けました。ただし、偽のIDファイルを指定すると、私にとってはうまくいきませんでした。

ssh -i /dev/null host

私は、APCラックマウントPDUに壊れたSSHサーバを回避するために(永久にこれをしなければならない-滞在遠くセキュリティを心配している場合の離れたこれらの事から-私は私の設定ファイルにオプションを置くことになりました。

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

2

@scooprと@HalilÖzgürの回答はうまくいきませんでした。

これは私のために働いた:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@example.com

ソース:http : //linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


13
質問は、パスワードによるクライアント認証に関するものです。この答えは、サーバーホストキーが既知のホストのキーと一致するかどうかを確認することです。実際には、別の質問に答えている
-Anigel

2

またBatchMode=yes、.ssh / config にはアクティブなものがないことも確認してください。それ以外の場合は、インタラクティブなパスワードプロンプトを表示する機会がありません。


0

私は世界でこの問題を抱えている唯一の人かもしれませんが、ssh別のオペレーティングシステム(cygwinシェルでWindowsのchoco ssh)を実行しているwhich ssh

解決策は

 /usr/bin/ssh user@example.com

完全なパスに注意してください。走った後これをやったcyg-get openssh

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.