2011-12-26 :-(
_ [ssh]ssh の接続元 IP アドレス
(っ´∀`)っ ゃー » [munin] 監視サーバのIPアドレス取得スクリプト修正
nullpopopo のひとはリモートへ ssh したときに接続元(つまりクライアント)の IP アドレスを取得するためにログをごにょっているんだが、ssh はもっと手軽な手段があったようなあと思い出そうとしてなんだったかなーなんだったかなーと思っていたらそうだ環境変数だった。
% env | grep SSH SSH_CLIENT=xxx.xxx.xxx.xxx 8888 22 SSH_CONNECTION=xxx.xxx.xxx.xxx 8888 yyy.yyy.yyy.yyy 22 SSH_TTY=/dev/pts/1
- xxx.xxx.xxx.xxx が接続元 IP アドレス
- yyy.yyy.yyy.yyy が接続先 IP アドレス
- 8888 が接続元ポート
- 22 が接続先ポート
( 下記コードに書いてある )
なのだが
sshによるリモートアクセスを見分ける方法 SSH_CONNECTION SSH_CLIENT
SSH_CLIENTは deprecated とコメントされているので、利用するのは、あまり望ましくないかもしれません。
NetBSD も然り
CVS log for src/crypto/external/bsd/openssh/dist/session.c
/* SSH_CLIENT deprecated */ snprintf(buf, sizeof buf, "%.50s %d %d", get_remote_ipaddr(), get_remote_port(), get_local_port()); child_set_env(&env, &envsize, "SSH_CLIENT", buf); laddr = get_local_ipaddr(packet_get_connection_in()); snprintf(buf, sizeof buf, "%.50s %d %.50s %d", get_remote_ipaddr(), get_remote_port(), laddr, get_local_port()); xfree(laddr); child_set_env(&env, &envsize, "SSH_CONNECTION", buf); if (s->ttyfd != -1) child_set_env(&env, &envsize, "SSH_TTY", s->tty); if (s->term) child_set_env(&env, &envsize, "TERM", s->term); if (s->display) child_set_env(&env, &envsize, "DISPLAY", s->display); if (original_command) child_set_env(&env, &envsize, "SSH_ORIGINAL_COMMAND", original_command);
_ [sudo]sudo: sorry, you must have a tty to run sudo
% ssh homura@host1 'sudo echo hoge' sudo: sorry, you must have a tty to run sudo
オウフ
sudoが「sudo: sorry, you must have a tty to run sudo」と文句を言うときは
# # Disable "ssh hostname sudo <cmd>", because it will show the password in clear. # You have to run "ssh -t hostname sudo <cmd>". # Defaults requiretty
-t しろと
% ssh -t homura@host1 'sudo echo hoge' hoge
おk
ご無沙汰でございます。最近グランツ5ばかりでリッジ7の活動休止していました。本日から再開します!<br>あと僕のブログの方にレースイベントを掲載しました。
久しぶりどす。<br>レース見ときます (「・ω・)「