現在このコマンドを使用しています。別のコンピュータにあります(ip1)。
scp file.txt root@ip2:/home/praveen/test.c /home/praveen
このコマンドは、パスワードの入力を求めるメッセージを表示します。
一部のシェルスクリプトはそれを使用しており、いくつかのcrontabファイルでそのスクリプトを呼び出しています。だから毎回パスワードを入力することはできません。パスワードの入力を無効にする方法、またはパスワードを再入力する必要がないように、どこかでパスワードを入力する別の方法はありますか?
ssh-keygen
このスクリプトでのみ作業を行う必要があるため、使用できません。この機能を使用すると、ssh-keygen
再度パスワードの入力を求められません。私はこれをしたくありません。残りは正常に進むべきです。
答え1
ssh-keygen
鍵交換が利用できない理由は不明です。私はこれが推奨される慣行だと思います。
expect
もう一つの方法は、コマンドを使用することです(オンラインマニュアルページ)。これにより、対話中にユーザーの介入が排除されます。名前が示すように、プロンプトを受け取り、指定された方法でそれに応じて応答します。
このソリューションをチェックしてください自動化されたSSHの使用expect
。数行を引用するには:
# Look for passwod prompt expect "*?assword:*" # Send password aka $password send -- "$password\r"
2行目は表示されるプロンプトを指定します。その場合はパスワードをお願いします。 4行目はパスワードをサーバーに送信します。
答え2
リモートサーバーが許可している場合は、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`
答え3
誰も実際の答えを投稿していないからです。
はい、コメントに記載されているとおりです。公開/秘密鍵のペアを生成する必要があります。
以下は2つのマニュアルです:
ssh-agent
その後、キーに指定されたパスワードを入力する必要がないように、キーをメモリにロードするという利点を享受できます。キーは現在のセッション中にメモリに保存されるためです。まずパスワードを設定する必要はありませんが、秘密鍵を持つ誰かがそれを使用してあなたを傷つける可能性があるので、そうすることをお勧めします。
もちろん、鍵を削除したり、~/.ssh/authorized_keys
リモートホストから公開鍵を削除したりできます。その後、彼はあなたのパスワードを再度尋ねるメッセージを表示します。
答え4
簡単な解決策は次のとおりです。
echo "password" | scp -r myfile user@remotehost:/home/user/destination