私が質問するのが正しいかどうかはわかりませんが、基本的にこのプロセスを自動化したいと思います。
scp ~/.ssh/id_rsa.pub [email protected]:~/
ssh [email protected]
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
rm id_rsa.pub
chmod go-w ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
だから私はシェルスクリプトを作成して、次のように.bash_profileに入れることができると思いました。
setup_ssh () {
scp ~/.ssh/id_rsa.pub $1:~/
ssh $1
#the following is happens when connected to the server using ssh
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
rm id_rsa.pub
chmod go-w ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
}
しかし、もちろん、これはサーバーに接続してもコマンドを実行し続けないため、機能しません。 SSHを介してサーバーに接続した後にコマンドを実行し続ける方法はありますか?
ベストアンサー1
以下は少し異なる作業方法です。
setup_ssh() {
cat ~/.ssh/id_rsa.pub | ssh $1 '
mkdir .ssh;
cat >> .ssh/authorized_keys;
chmod go-w .;
chmod 700 .ssh;
chmod 600 .ssh/authorized_keys
'
}
cat
id_rsa.pub ファイルからシェルパイプを削除することもできますが、この程度なら続行できると思います。
編集:
これは、
基本的にリモートホストで新しいシェルを起動して渡したコマンドssh
(引用符)を実行することです。このcat >> .ssh/authorized_keys
セクションに達すると、まだSTDINから読み込まれていないため、STDINのデータはcat ~/.ssh/id_rsa.pub
まだ残ります。cat
STDINからデータを読み取り、それを新しいAuthorized_keysファイルにリダイレクトします。次に、残りのコマンドを実行します。