リモートサーバーがあり、サーバーでスクリプトを記述していて、SSHでのみ起動するようにしたいと考えています。この目的のために$SSH_CONNECTION
と$SSH_TTY
を使用することを考えました。 sshを使用せず、代わりにVNCクライアントを使用してサーバーにアクセスした場合(サーバーでvncを実行している場合)、VNC内で作成された端末には、これら2つの環境変数が設定されており、$SSH_CONNECTION
にはどちらの場合も同じ値です。 ps -o comm= -p $PPID
でさらにフィルタリングを行い、親プロセスがsshdであるかどうかを確認する回避策を見つけましたが、変数が設定されている理由を知りたいです。
VNC接続がSSH接続を介してトンネリングされているため、変数が設定されている可能性があります。これを行うのには十分な理由があります。 VNCは RFBプロトコル を使用します 安全ではありません 。 SSHを介してVNCをトンネリングすると、セキュリティが向上します。
SSH_CONNECTION変数は、(1)クライアントIPアドレス、(2)クライアントポート番号、(3)サーバーIPアドレス、および(4)サーバーポート番号の4つの値で構成されます。特定のサーバーと通信している特定のクライアントの場合、あるセッションから次のセッションに変更される可能性が高いのは、クライアントのポート番号だけです。それが変わるかどうかは異なります。たとえば、SSHに指示することができます 既存の接続を再利用するため 。これはスピードのために行われます。その場合、複数の接続がすべて1つのポートを共有する可能性があります。