シェルスクリプトでSSHを使用すると、手動入力は許可されますが、パラメータは許可されません。

シェルスクリプトでSSHを使用すると、手動入力は許可されますが、パラメータは許可されません。

authenticate.sh次のシェルスクリプトがあります。

#!/bin/bash
sshpass -p '$1' ssh $2@localhost

使って呼ぶ

bash authenticate.sh password username

ところで実行すると「権限が拒否されました。もう一度お試しください」というメッセージが表示されます。走れば

#!/bin/bash
sshpass -p 'password' ssh user@localhost

効果があります...

助けが必要ですか?

答え1

単一のアポストロフィがスクリプトを台無しにしたようです。以下の説明を参照してください。

これは期待どおりに機能します。

#!/bin/bash
sshpass -p "$1" ssh "$2"@localhost

これは、単一のアポストロフィのために変数を内部的に拡張することができないためです。

関連情報