SSH経由でリモートシステムに接続したいのですが、パスワードを入力する代わりに別のファイルからリダイレクトしたいと思います。
password.txt
だからパスワードを保存するファイルがあります。File.sh
私のbashファイルです。
存在するFile.sh
#!/bin/bash
ssh -T [email protected]
ファイルの実行中に次のことを行いました。
./File.sh < password.txt
ただし、とにかくパスワードの入力を求められます。
ファイルにパスワードを入力するにはどうすればよいですか?
答え1
「ファイルのパスワード」を使用するSSHは、公開鍵認証によく使用されます。鍵ペアの生成を使用してssh-keygen
公開鍵を別のホストにアップロードします。
scp ./.ssh/id_rsa.pub [email protected]:~/
次のように配置します~/.ssh/authorized_keys
。
ssh [email protected]
mkdir ~/.ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys
またはauthorized_keys
ファイルがすでに存在する場合:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
適切な権限を設定します(ファイルの場合は600、ディレクトリの場合は700)。
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
新しいSSHセッションを開始します。
答え2
sshpass
次の方法を使用してこれを実行できます。
sshpass -f password.txt ssh -T [email protected]
答え3
#!/usr/bin/expect -f
spawn ssh shw@hostname
expect -exact "shw@hostname's password: "
send -- "PASSWORD\r"
expect "$ "
interact
Expectは、このプロセスを自動化するツールです。