myfile.txtをログイン用のパスワードを使用するリモートSSHに送信するようにします。 OSX用のbashからPHP - PHPでパスワード付きのSSH経由でBASH OSXからリモートにSCPローカルファイルを送る方法
私は手動でファイルを送信するには、このコマンドを使用します。
#!/usr/bin/expect
spawn scp /Users/myname/Documents/myfile.txt [email protected]:/Docs/myfile.txt
expect "[email protected]'s password:"
send "mYpassWORD\r"
interact
が、私はこれを実行することができます。
scp /Users/myname/Documents/myfile.txt [email protected]:/Docs/myfile.txt
を私はPHPを経由して、それを実行する必要がありますので、私はこのupload.sh
bashスクリプトを作りましたコードの上に:./update.sh
端末で、それは私が望むようにファイルを送信します。
問題は、PHPでこのbashスクリプトを追加するときに、ファイルを送信しないことです。
exec('/Library/WebServer/update.sh 2>&1', $output);
print_r($output);
そして、私はこのエラー/ MSGで立ち往生しています:
私が試してみました、それはいけないPHPを経由して、
Array
(
[0] => spawn scp /Users/myname/Documents/myfile.txt [email protected]:/Docs/myfile.txt
[1] => [email protected]'s password:
)
はbashでパスワードが送信され、すべてがOKですが、ファイルをアップロード。 私はまた、初めてPHPにそれを実行したことに気付きました。それはSSHホストキーが一致しないと言いました。そのため、.sshフォルダをサーバルートの場所にコピーしました。そのエラーはなくなりました。
誰でも手助けをしていただけますか? ありがとうございました
SSH鍵のペアを生成し、公開鍵をサーバの '〜/ .ssh/authorized_keys'ファイルに追加しようとしましたか?パスワードを入力する必要はなく、 'expect'も必要ありません。 –
@RuslanOsmanov申し訳ありませんが、わかりません。ターミナル経由でログインしたときに、.sshに保存したいのかと尋ねられました。しかし、PHPを使用する場合、OwnerはWWWは別のアカウントを意味しますか? .sshフォルダをサーバにコピーしましたが、今は鍵を要求しません。私は 'authorized_keys'を生成していません。私には 'known_hosts'しかありません。どうやってやるの?ありがとう – Cyborg
秘密鍵を誰にも渡すべきではありません(!)。ハンドシェイクは、公開鍵を使用して行われます。信頼できる公開鍵はサーバの '〜/ .ssh/authorized_keys'ファイルに登録されているはずであり、公開鍵はクライアントのマシンに保存する必要があります_only_。 'ssh-keygen'ユーティリティを使って一対のSSH鍵を生成することができます。たとえば、[GitHubの手順](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/)を参照してください。 –