現在このコマンドを使用しています。私は別のマシン(ip1)にいます
scp file.txt root@ip2:/home/praveen/test.c /home/praveen
コマンドはパスワードを要求します。
一部のシェルスクリプトで使用し、これらのスクリプトをいくつかのcrontabファイルから呼び出しています。そのため、毎回パスワードを入力することができません。パスワードの入力を無効にする方法や、どこかからパスワードを入力する別の方法があるので、もう一度入力する必要はありません。
また、ssh-keygen
は使用できません。これらのスクリプトに対してのみアクションを実行する必要があるためです。 ssh-keygen
を使用すると、パスワードの入力を再度求められることはありません。これは欲しくない。残りの部分は通常どおり機能するはずです。
ssh-keygen
とそれに続くキー交換を使用できない理由は明らかではありませんでした。これは推奨される方法だと思います。
代わりに、expect
コマンド( オンラインマニュアルページ )を使用することもできます。これにより、対話型プロセスでのユーザーの介入を排除できます。名前が示すように、それはプロンプトを期待し、それに応じてそれに応じて応答します。
expect
を使用したSSHの自動化 のこのソリューションを見てください。数行を引用するには:
# Look for passwod Prompt expect "*?assword:*" # Send password aka $password send -- "$password\r"
2行目は、表示されるプロンプトを指定します。この場合、パスワードを要求します。 4行目は、パスワードをサーバーに送信します。
リモートサーバーで許可されている場合は、ftpを使用できます。これは、この目的で使用したシェルスクリプトのサンプルです
Host='remote.server.com'
USER='domainname/usrid'
PASSWD='p@@ssw0rd'
cd /path/to/local/directory/containing/the/file/to/be/transferred
`ftp -n $Host <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /diretory/on/remote/server
put file2transfer.dat
bye
quit
END_SCRIPT`
誰も実際の答えを投稿していないので。
はい、コメントに記載されています。公開鍵と秘密鍵のペアを作成する必要があります。
ここに2つのマニュアルがあります:
次に、ssh-agent
を使用して、キーをメモリにロードできます。これにより、キーに指定したパスワードを入力する必要がなくなります。これは、現在のセッションでキーがメモリに保存されるためです。そもそもパスワードを設定する必要はありませんが、秘密鍵を持っている人がそれを使ってあなたを危険にさらす可能性があるので、そうすることをお勧めします。
もちろん、後で鍵を削除したり、リモートホストの~/.ssh/authorized_keys
から公開鍵を削除したりできます。その後、pwの入力を再度求めます。