web-dev-qa-db-ja.com

.ssh / configにパスワードを追加する

私はubuntu 12.04を使用しています。私は毎日多くのサーバーに接続するためにsshを使用しているので、それらのパラメーターを。ssh/configファイルに入れます。このような :

Host server1
User Tux
Port 2202
HostName xxx.x.xx.x

接続ごとに、このファイルにパスワードを入力する方法はありますか?したがって、サーバーがパスワードを要求すると、端末はパスを入力してサーバーに送信するので、毎回パスワードを入力する必要はありません。また、公開鍵と秘密鍵のペアを使用したくありません。

30
Ajo Augustine

いいえ、opensh組み込みメカニズムを使用したssh認証のために、非対話的な方法でコマンドラインでパスワードを指定または提供する方法はありません。少なくとも私が知っていることは1つではありません。パスワードをexpectスクリプトにハードコードすることもできますが、それも良い解決策ではありません。

Michaelが述べたように、パスワードなしの認証には必ずキーペアを使用する必要があります。最終的には、秘密鍵はファイル内のかなり大きなパスワードです。

32
Danila Ladner

コメントの文字列を回避するには:はい、これは安全ではありません(間違いなく安全ではありません)。分離されたネットワークでのラボの状況、または完全なリセット/フォーマットを行わずに本番サーバーまたは潜在的に本番サーバーを含まない同様の状況でのみ行うことを強くお勧めします。

私の2950スイッチは秘密/公開キーをサポートしていないと思うので、これを設定したかったので、いつかその知識を得たいと思っていますが、まだそこにはいません。

エイリアスとsshpassを使用すると、これを実現できます。

  1. Sshpassをインストールする
  2. 。ssh/configファイルを変更して、質問にリストされているユーザー名を含めます
  3. 端末にエイリアスを追加します(私は.bashrcを使用しており、gloabl設定は推奨しません)
  4. エイリアスを使用してターゲットにログインします

私の例のエイリアスは:

alias ssc='sshpass -pcisco ssh'

「Cisco」はパスワードです。 -pとパスワードの間にスペースがないことに注意してください。

使い方は(質問を参照):

ssc server1

注:これは、検索エンジンを使用している人のみのタイトルの質問に回答します。質問の例のようなサーバーを使用している場合は、この回答ではなく秘密/公開鍵のペアを使用する必要があります

23
DarkSheep

はい、上記のように、単純にパスワードを保存する方法はありません。承認にはsshキーを使用することをお勧めします。

まず、キーを生成します:

ssh-keygen

次に、サーバー/デスクトップでキーをコピーします。

ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:

それで全部です。再度パスワードを要求されることはありません。

また、一般的にパスワード認証を削除することをお勧めしますが、それはあなた次第です。

14
Str82DHeaD

Sshでこれを行う方法はありません。できる限り安全ではありません。

Danilaが述べたように、expectスクリプトを使用できますが、私は気にしません。

何を成し遂げようとしているのかしら?サーバー間を移動しますか?この場合、ワークステーションでssh-agentをセットアップして使用し、ターゲットホストでエージェント転送を有効にします。このようにして、秘密鍵をコピーすることなく、クレデンシャル交換をローカルエージェントにルーティングできます。

4
Eddy

このスクリプトは~/.local/binディレクトリから使用しています

#!/usr/bin/bash

ORIG_SSH=/usr/bin/ssh
Host=$1

SSHPASS=$(grep -Pzo "Host $Host"'\s*\n((?!Host).*\n)*#PS\s(\N+)\n' ~/.ssh/config|tail -n 2|head -n 1 | sed 's/#PS //')
if [ -n $SSHPASS ]; then
    export SSHPASS
    sshpass -e $ORIG_SSH $@
else
    $ORIG_SSH $@
fi

これにより、#PS <password>ファイルでパスフレーズを.ssh/configとして指定できます。

しかし、誰もが言うように、可能な場合はssh-keysssh-agentとともに使用することをお勧めします

2
mnach

この状況を処理する正しい方法は、セッションベースのssh-agentを使用することです。方法は次のとおりです。

$ eval `ssh-agent`
$ ssh-add /home/user/.ssh/your_key
Enter passphrase for /home/user/.ssh/your_key:

その後、パスワードはセッションの残りの期間有効なままになります。最初のコマンドを1回実行するだけでよく、その後は必要なだけキーを追加できます。セッションが強制終了されるとエージェントも強制終了されるため、パスワードのハードコーディングされたストレージはありません。

久しぶりにこの答えはここにはなかったことにショックを受けました!

0
pranalli