SecureBridgeを使って、SSHログインとシェルを動かした。。。けど謎。
Delphi向けの有料コンポーネントのSecureBridgeを使って、SSHログインとシェルコマンドを実行させる手順をまとめときます。
開発元が公開しているマニュアルがあまりにも読みづらかったので、試行錯誤しながらなんとか動いた感じなので間違いは多々ある気もする。
あと、非常に謎が多い。よくわかってないとこがあるんですよね。嫌な感じ。
必要なコンポーネント
・TScSSHClient
・TScSSHShell
SSHログインする
- TScSSHShellのClientプロパティにTScSSHClientを指定。
- TScSSHClientのHostName、Port、User、Passwordプロパティに接続先の情報をそれぞれ代入。
- パスワード認証の場合は、TScSSHClientのAuthenticationプロパティをatPasswordにする。
- ServerKeyValidateイベント中で、AcceptをTrueにする。
- TScSSHShellのConnectメソッドを実行する。
と、ざっくりこんな感じ。
NonBlockingプロパティをTrueにすると非同期ノンブロッキングモードで動作するようで、
多分こっちで動かすのがいいと思う。
シェルコマンドを実行したい場合には、ExecuteCommandメソッドを使うことになる。
シェルからの戻り値を取得するには、OnAsyncReceiveイベントからReadStringメソッドで読める。
よくわからない点
OnAsyncReceiveイベントが発生したりしなかったり
OnAsyncReceiveイベントから戻り値を取得する前に、別のExecuteCommandを実行すると
古い方の受信データが見えない。
無理やりSleepなどを入れて、戻り値を取得できてから次のコマンドに移るようにしてるけど、
やり方として美しくない(
NonBlockingをFalseにするとOnAsyncReceiveイベントが発生しないと思う。多分。
この場合、戻り地をReadBufferメソッドで取得することになるんだけど、これの使い方がまだよくわかってない。
鍵認証のやりかた
パスワード認証ではログインできたけど、鍵認証ではできてない。
最初は鍵認証でいこうとしたんだけど、時間がないのでパスワード認証にした。
どちらにしてもUserもPasswordも固定なら自動認証できるしね。
ただ、今後は対応できるようにしたい。勉強が足らんなぁ。
なんかわかる人いたら教えてほしいです。いやまじで。
ディスカッション
コメント一覧
まだ、コメントがありません