スクリプト内でSSH
を使用したいのですが、このスクリプトは私のマシンでは実行されません。
私の実装には2つの制限があります。
expect
を使用できません。public keys
はSSH
を表します。可能なオプション-ソリューションは何ですか?
追加の依存関係を追加せずに、自動化された安全な方法で要求されたパスワードをsshに提供するにはどうすればよいですか?
スクリプト内でパスワードを提供することは可能ですか?
よろしくお願いします:)
まず第一に:平文に秘密を入れないでくださいnlessなぜそれが安全なことなのか知っています秘密を知っている攻撃者によって行われます)。
スクリプトにシークレットを追加しても問題ない場合は、sshキーを同梱してssh-agent
シェルで実行できます。
#!/usr/bin/env ssh-agent /usr/bin/env bash
KEYFILE=`mktemp`
cat << EOF > ${KEYFILE}
-----BEGIN RSA PRIVATE KEY-----
[.......]
EOF
ssh-add ${KEYFILE}
# do your ssh things here...
# Remove the key file.
rm -f ${KEYFILE}
Sshキーを使用する利点は、 forced commands を使用して、キーホルダーがサーバー上で実行できることを制限できることです。
より安全な方法は、スクリプトでssh-keygen -f ~/.ssh/my-script-key
を実行してこの目的専用の秘密キーを作成することですが、公開キーをサーバーに追加するためのルーチンも必要になります。
Sshpassをインストールしてから、コマンドを起動します。
sshpass -p "yourpassword" ssh -o StrictHostKeyChecking=no yourusername@hostname
セキュリティ上の理由から、コマンドラインでパスワードを入力しないでください。そうしないと、psコマンドを実行しているユーザーがパスワードを見ることができます。次のような sshpass ユーティリティを使用することをお勧めします。
#!/bin/bash
export SSHPASS="your-password"
sshpass -e ssh -oBatchMode=no sshUser@remoteHost
興味があるかもしれませんBashスクリプトのパスワードでsftpコマンドを実行する方法?
私の知る限り、キーを使用する以外にコマンドラインバージョンssh
を使用している場合は期待できません。しかし、C、python、phpなどのほとんどのプログラミング言語用のライブラリバインディングがあります。そのような言語でプログラムを書くことができます。これにより、パスワードを自動的に渡すことができます。しかし、注これは、パスワードがそのプログラムにプレーンテキストで保存されるため、もちろんセキュリティ上の問題です