sshによるリモートアクセスを見分ける方法 SSH_CONNECTION SSH_CLIENT
スポンサーリンク
sshによるリモートアクセスを見分ける方法について
考えてみました。リモートアクセス時とそれ以外でプログラムの挙動を
変えるのが目的でした。
sshでリモートログインした場合、sshは、環境変数に
SSH_CLIENTやSSH_CONNECTIONに値をセットします。
この存在を確認することで、sshによるアクセスかどうかを
判別することにしました。環境変数に依存するために、unsetされたら
sshによるアクセスと認識できなくなりますので、unsetされて困る場合は
別の方法を検討してください。
/usr/src/crypto/openssh/session.c
FreeBSDのsshのソースコード
/usr/src/crypto/openssh/session.c
からの抜粋です。
SSH_CLIENTは deprecated とコメントされているので、
利用するのは、あまり望ましくないかもしれません。
sshアクセスを判別する方法
Perlで書いてみました。
環境変数にSSH_CONNECTIONかSSH_CLIENTが存在したら、sshによるアクセス
とみなします。
考えてみました。リモートアクセス時とそれ以外でプログラムの挙動を
変えるのが目的でした。
sshでリモートログインした場合、sshは、環境変数に
SSH_CLIENTやSSH_CONNECTIONに値をセットします。
この存在を確認することで、sshによるアクセスかどうかを
判別することにしました。環境変数に依存するために、unsetされたら
sshによるアクセスと認識できなくなりますので、unsetされて困る場合は
別の方法を検討してください。
/usr/src/crypto/openssh/session.c
FreeBSDのsshのソースコード
/usr/src/crypto/openssh/session.c
からの抜粋です。
SSH_CLIENTは deprecated とコメントされているので、
利用するのは、あまり望ましくないかもしれません。
/* $OpenBSD: session.c,v 1.220 2006/10/09 23:36:11 djm Exp $ */ /* 省略 */ static int auth_input_request_forwarding(struct passwd * pw) { Channel *nc; int sock; struct sockaddr_un sunaddr; /* 省略 */ /* 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); /* 省略 */ }
sshアクセスを判別する方法
Perlで書いてみました。
環境変数にSSH_CONNECTIONかSSH_CLIENTが存在したら、sshによるアクセス
とみなします。
#!/usr/local/bin/perl -w use strict; use Env qw(SSH_CONNECTION SSH_CLIENT); my $remote = 0; if(defined $ENV{SSH_CONNECTION} or defined $ENV{SSH_CLIENT} ) { $remote = 1; } print $remote, "\n";
参照しているページ (サイト内): [2009-03-03-1] [2008-10-19-1] [2008-08-17-1]
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12