
私はUbuntu 12.04を使用しています。毎日多くのサーバーに接続するためにsshを使用しているので、そのパラメータを.ssh/configファイル;次のようになります:
Host server1
User tux
Port 2202
HostName xxx.x.xx.x
セキュリティを確保するにはキーペアを使用する必要があることはわかっていますが、リモート マシンに公開キーを追加できない場合があります (例: パスワードを受け入れて特定のコマンドを実行するパブリック SSH サーバー、またはホーム ディレクトリのないユーザー)。
では、接続ごとにこのファイルにパスワードを入れる方法はありますか? サーバーがパスワードを要求すると、端末がパスワードを入れてサーバーに送信するので、毎回パスワードを入力する必要がありません。
答え1
いいえ、openssh の組み込みメカニズムを使用して、ssh 認証のパスワードを非対話形式でコマンド ラインで指定または提供する方法はありません。少なくとも私が知っている限りでは、そのような方法はありません。パスワードを expect スクリプトにハードコードすることもできますが、これも良い解決策ではありません。
Michael が述べたように、パスワードなしの認証には必ずキーペアを使用する必要があります。結局のところ、秘密キーはファイル内の大きなパスワードのようなものです。
答え2
一連のコメントを避けるには、はい、これは安全ではありません (安全でないとさえ言えません)。完全なリセット/フォーマットを行わずに、隔離されたネットワーク上のラボ状況、または実稼働サーバーや潜在的に実稼働サーバーを含まない同様の状況でのみ実行することを強くお勧めします。
私の 2950 スイッチは秘密鍵と公開鍵をサポートしていないと思うので、これを設定したいと思っていましたが、いつかその知識を得たいと思っていましたが、まだそこまでには至っていません。
エイリアスと sshpass を使用するとこれを実現できます。
- sshpassをインストールする
- あなたの.ssh/config質問に記載されているユーザー名を含むファイル
- ターミナルにエイリアスを追加します(私は .bashrc を使用しましたが、グローバル設定はお勧めしません)
- エイリアスを使用してターゲットにログインする
私のエイリアスの例は次のとおりです:
alias ssc='sshpass -pcisco ssh'
ここで、「cisco」はパスワードです。-p とパスワードの間にスペースがないことに注意してください。
使用法は(質問を参照して)次のとおりです。
ssc server1
注: これは、検索エンジンを使用している人のみを対象にしたタイトルの質問への回答です。質問例のようなサーバーを使用している場合は、この回答ではなく、秘密/公開キーのペアを使用する必要があります。
答え3
はい、前述のとおり、パスワードを単純に保存する方法はありません。認証には SSH キーを使用することをお勧めします。
まず、キーを生成します:
ssh-keygen
次に、キーをサーバー/デスクトップにコピーします。
ssh-copy-id -i .ssh/id_rsa.pub user@ip-address:
以上です。パスワードを再度求められることはありません。
一般的にパスワード認証を削除することもお勧めしますが、それはあなた次第です。
答え4
ssh でこれを行う方法はありません。これは極めて安全ではありません。
Danila が言ったように、expect スクリプトを使用することもできますが、私は気にしません。
何を達成しようとしているのでしょうか? あるサーバーから別のサーバーへ移動したいのでしょうか? この場合は、ワークステーションで ssh-agent を設定して使用し、ターゲット ホストでエージェント転送を有効にします。こうすることで、秘密鍵をコピーしなくても、資格情報の交換がローカル エージェントにルーティングされます。