sshから直接suでスイッチしつつコマンドを実行する際に仮想端末(tty)を有効にさせる
Pocket

前回、sshからsuでユーザを切り替えて、ログインユーザではないユーザから直接コマンドを実行させるという内容について記述していたが、この方法だとttyの払い出しがなされないということに気づいた。

sshから直接suコマンドでユーザを切り替えてコマンドを-cオプションで実行させる場合、残念ながら仮想端末が有効にならないし、そのためのオプションというのも用意されていない。
じゃあどうすればいいかというと、scriptコマンドを経由することで仮想端末が使えるようになるので、それを利用する。

ssh -tt user@host "su - user -c 'script command' << EOF
password
EOF"
Sponsored Links

[blacknon@BlacknonMacBook-Pro2018][~]                            [BATTERY:100%]
(`・ω・´)  < sshpass -p password ssh -tt login@BS-PUB-CENT7-02.blacknon.local su - target -c 'script -c "echo;pwd;whoami;tty"' << EOF
password
EOF
パスワード:

/home/target
target
/dev/pts/2
Connection to bs-pub-cent7-02.blacknon.local closed.

 

あまりttyが必要になるコマンドというのもそう多くはないだろうけど、こういうやり方もあるということで…。
地味にログも残るので、悪くはないやり方なのではないだろうか。

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*