SSH接続をキー入力の有無でタイムアウトさせる方法

このQ&Aのポイント
  • セキュリティの関係上、SSHでログインして、一定期間入力がないと切断するようにサーバー側で設定する方法について調べました。
  • sshd_configの設定でClientAliveCountMaxとClientAliveIntervalを変更することで、一定時間キー入力がない場合にタイムアウトさせることができます。
  • ただし、この方法はSSHクライアント側のプロセスが落ちているかどうかをチェックするものであり、画面を開きっぱなしで放っておいた場合にはタイムアウトしない可能性があります。
回答を見る
  • ベストアンサー

SSH接続をキー入力の有無でタイムアウトさせたいのですが

SSH接続をキー入力の有無でタイムアウトさせたいのですが  セキュリティの関係上、SSHでログインして、一定期間入力がないと切断するようにサーバー側で設定したいと思っています。(開いたまま長時間離席、帰宅などを防ぐため)  いろいろと検索したのですが、sshd_configの設定でClientAliveCountMaxとClientAliveIntervalを「いじればできるんじゃないか」というようなものにヒットするのですが、私の理解ではこれはSSHクライアント側のプロセスが落ちているかどうかチェックするためのもので、画面を開きっぱなしで放っておいた場合にはタイムアウトにならないのではないかと思っています。  そこで質問なのですが、 1.上記理解は正しいでしょうか 2.正しいとして、キー入力の有無によってタイムアウトさせる方法はあるでしょうか  よろしくお願いいたします。

  • annyG
  • お礼率70% (67/95)

質問者が選んだベストアンサー

  • ベストアンサー
noname#116115
noname#116115
回答No.2

>SSHを使ってしばらく放っておくとタイムアウトで切断されてしまうが、無効にするにはどうしたらいいのか 対処方法として示されているのは、クライアントばかりですね。 Tera Term の設定を確認してみたら、60秒間隔のKeepAlive用のハートビートがデフォルトで入っていました。 ssh_conf も TCPKeepAlive がデフォルトで yes になっています。 接続元のクライアントを限定できるのであれば、クライアントの設定を見直すことである程度対処できるかもしれません。

annyG
質問者

お礼

なるほど、確かにそうですね。切れてしまう原因の方をよく読んでみるとNATが悪いとかそういうのばかりで、サーバーの設定だけで解決する方法っていうのはないですね。つまり、サーバーの設定だけで切るっていうことはできないのかもしれないっていうことですよね。 クライアント全部を設定していくのはかなりの作業量になりますし、ユーザにその設定を変更されてしまったら終わりなので、かなり難しいですね。。。 タイムアウトってされたら困るときにされてしまって、できるようにしたいときはできない的なことが多いですねぇ。。。 いずれにせよ、かなり難しいと言うことがわかりました。勉強になりました。ありがとうございました。

その他の回答 (1)

noname#116115
noname#116115
回答No.1

検証してみました。 >1 どうやらその通りです。 さらに、screen コマンドを使用してクライアントを切断しても、セッションは残ったままになりました。 >2 やり方は分かりませんが、もしこれができたら 例えば、コンパイル中に離席し帰ってきたらセッション切断などの憂き目に合いそうな気がします。

annyG
質問者

お礼

検証までしていただき、ありがとうございました。 だいたいタイムアウトの時間としては数時間単位を考えています。 実はこれを調べようとして、「SSH タイムアウト」で検索したときにたくさんヒットしたのが「SSHを使ってしばらく放っておくとタイムアウトで切断されてしまうが、無効にするにはどうしたらいいのか」というものでした。ですからなんらかの方法があるのではないかと思ってはいるのですが。。。

関連するQ&A

  • rlogin 接続がすぐにタイムアウトします

    サーバー側、クライアント側共にRedHat7.3を使っていますが、 rlogin 接続がしばらくするとタイムアウトします。 切断されないように設定する方法をご教示頂けませんでしょうか。

  • クライアント・ブラウザ毎のタイムアウト設定について

    いつも参考にさせていただいております。 今回質問させていただきたいのはクライアント側のタイムアウト設定になります。 IEはクライアント側からサーバーに対してデフォルト5分間反応がなければタイムアウトを起こすよう設定されており、この設定を変更するにはレジストリの変更を実施する・・・というのは調べてわかったのですが ネットスケープ(4.78)とfire fox(バージョン3以降)で同様の設定変更を実施したいのですが、やり方ご存知の方いらっしゃいませんでしょうか? おそらくアドレスバーにabout:configと入力して表示される各設定値のどれかを変更すればいいとは思うのですが・・・ よろしくお願いいたします。

  • パスワード入力なしでsshログイン

    パスワード入力なしでsshログインしたいけど上手く行きません。 CentOS7のPCが2台(CentOS7-C, CentOS7-S)あります。 CentOS7-CからCentOS7-Sにパスワード入力なしでsshログイン(鍵認証でログイン)したいと思い、下記のサイトを参考にしながら悪戦苦闘しています。 パスワード入力なしでsshログイン(鍵認証でログイン) https://setting-tool.net/ssh-key-authorize <手順> クライアント側  ssh-keygen -t rsa でキー生成 サーバー側  クライアントで生成したキーを保存 <コマンド> ■前提 クライアント側 CentOS7-C 172.16.0.201 サーバー側 CentOS7-S 172.16.0.202 ■クライアント側設定 キーの発行 [root@CentOS7-C ~]# ssh-keygen -t rsa パーミッション設定 [root@CentOS7-C ~]# chmod 700 /root/.ssh [root@CentOS7-C ~]# chmod 600 /root/.ssh/* キーファイルをサーバー側に送る [root@CentOS7-C ~]# rsync -av -e ssh /root/.ssh root@172.16.0.202:/root/.ssh/from172.16.0.201 この時は手動でパスワード入力 ■サーバー側設定 クライアントからのキーファイルを別名で保存 [root@CentOS7-S ~]# cp /root/.ssh/from172.16.0.201/.ssh/id_rsa.pub /root/.ssh/authorized_keys キーファイルのパーミッション設定 [root@CentOS7-S ~]# chmod 600 /root/.ssh/authorized_keys ■クライアント側から接続 [root@CentOS7-C ~]# ssh root@172.16.0.202 Enter passphrase for key '/root/.ssh/id_rsa': 成功していればパスワードを聞かれずにログイン。 しかし、失敗しているので、パスワードを要求されている。 <考察> クライアントで生成したキーをサーバーにリモートコピーするだけなのに上手く行かない。 シンプルな話、 クライアントの /root/.ssh/id_rsa.pub と サーバーの /root/.ssh/authorized_keys が 同じであれば成立するというだけの話に思えるが、 クライアントでのcat /root/.ssh/id_rsa.pub と サーバーでのcat /root/.ssh/authorized_keys を見比べても全く同じなのに上手く行きません。 何が悪いのでしょうか?

  • SSHが接続できません

    いつもお世話になっています。 最近、自宅でルータを使ってPC/2台でLANを構築したのですが、Telnet、FTPはもちろんのことSSHも接続できません。(接続タイムアウトになります)TeraTermのttsshで接続しようとしています。WAN側のホストへは接続できます。 LANの構成はRedHat8.0とWinMEです。RedHatをサーバとして使う予定です。 サーバ側のsshdも起動しているようです。 ping、trecertは通ります。ルータのLAN側で制限がかかっているのでしょうか? どなたかお分かりになるかたご教授をお願いいたします。

  • SSH接続ができません

    はじめましてよろしくおねがいします。 [仕様] ブロードバンド --- サーバーFedora Core5   ルータ    |   (サービス httpd           |         sshd           |         telnet           |         ftp )            |           |-クライアント1(win)          |- (略)          -クライアント5(win)  ルータ設定で、サーバーIPに対して  80.20.21.22.23.443ポートを開放  LAN内は固定プライベートIP  グローバルIPに対して、ドメイン取得済み  sshd_confはrootログイン禁止以外デフォルト  SELinuxにて上記サービスについて許可 [症状] 上記仕様にて、外部よりSSH、及びTelnet接続できません。 LAN内クライアントからプライベートIPでは接続できます。(SSH,Telnet) 同クライアントからグローバルIP、及びドメインでは接続できません。(SSH,Telnet) 外部からWeb、FTP接続は、グローバルIP、ドメイン共に問題ありません。 ポートについてはhttp://www.cman.jp/network/support/port.html にて外部より開放されていることの確認はしています。 わかり辛い表現あるかと思いますが、上記の症状について、なにか問題点等わかる方いらっしゃいませんでしょうか? 些細なことでけっこうですのでチェックすべきところ等ご教示いただければ幸いです。 どうぞ よろしくおねがいします。

  • クライアントPCからSSHで接続できない。

    クライアントPCからTera Term(SSH)で接続しようとしています。 サーバー(Ubuntu 11.10)に下記のコマンドを実行したら「openssh-server」がインストールされていなかった。 dpkg -l | grep ssh 下記のように行いました。 1.下記のコマンドで「openssh-server」をインストールしました。 sudo apt-get install openssh-server 2.下記のコマンドでファイアウォールの設定をしました。 sudo ufw allow ssh 3.下記のコマンドでSSHの設定ファイルを開き、変更しました。 sudo vi /etc/ssh/sshd_config Prot 22 ListenAddress 0.0.0.0 Protocol 2,1 PermitRootLogin no 4.下記のコマンドでSSHを再起動しました。 sudo /etc/init.d/ssh restart 上記のように設定してクライアントPCからTera Term(SSH)で接続したら「SSH認証」画面が表示されたんで「ユーザ名」と「パスフレーズ」に入力して[OK]ボタンを押下したらTera Termの画面が閉じてしまいました。 再度、Tera Term(SSH)を起動して「新しい接続」画面の「ホスト」を選んで[OK]ボタンを押下したら下記のエラーメッセージが表示されました ・「接続が拒否されました」 お恥ずかしいんですが何がいけないのかがわかりません。 申し訳ありませんがご教授いただけませんでしょうか? 宜しくお願いします。

  • IEでタイムアウトします

    IEで同じページをずっと表示しているとタイムアウトになり、 勝手に切断してしまいます。 WEBメールや掲示板に入力していると、すでに切れることが多いんです。 初期設定に見当たらないのですが。 どこで設定すれば良いのでしょうか? Mac環境でIE5を使用しています。

  • リモートから自宅サーバにsshまたはtelnetでログオンするとタイムアウトで切断されます。

    Red Hat Linux 9.0で自宅サーバを構築しました。 Tera termでssh接続をしたいと思ってます。 機器構成は以下のとおりです。 インターネット  |  | 自宅サーバ(Linux) global IP:xxx.xxx.xxx.xxx  |   private IP:192.168.0.1  | HUB  | 自宅内クライアント(Windows2000) private IP:192.168.0.17 Windows2000からであれば、 接続可能です。 外からリモートで接続しようとすると、 タイムアウトで接続を切断されます。 リモートから自宅サーバのIPにpingをうつと 問題なく通ります。 過去の質問をみると、time out設定はtera term側 ではなくサーバ側だという情報もありましたが、 具体的な設定場所は明記されていませんでした。 リモートから自宅サーバのLinuxをどうしても 操作したいので、お助けください。 よろしくお願いいたします。

  • クライアントPCの端末からからssh 接続

    クライアントPCの端末からからssh 接続をするためには? ○質問の主旨 WindowsのTeraTermをターミナルソフトとして、 Linuxのサーバー上にある SSHサーバーに接続したいと考えています。 そのときの接続コマンドは、以下の通りです。 $ ssh -l user -p 22 -i home/user/.ssh/authorized_keys server user→一般ユーザーの名前 22→ポート番号 home/user/.ssh/authorized_keys→公開鍵のパス名 server→SSHサーバーのホスト名 参考サイト http://dogmap.jp/2011/10/27/ssh_config/ しかし、上記のコマンドで接続しようとすると 下記のように叱られて、接続することができません。 Warning: Identity file home/user/.ssh/authorized_keys not accessible: No such file or directory. ssh_exchange_identification: Connection closed by remote host どのように接続するためにはどのように対処すれば よろしいでしょうか? ご存知の方がいらっしゃいましたら、 ご教示願います。 ○質問の補足 現在、SSHサーバーへのアクセス制御は以下のように設定しています。 #vi /etc/hosts.deny sshd:all #vi /etc/hosts/hosts.allow sshd:(サーバーのIPアドレスのみ記述) #vi /etc/ssh/sshd_config MaxStartups 10 (#MaxStartupsとコメントにされていたので#を削除) 参考サイト http://wsjp.blogspot.jp/2012/08/sshexchangeidentification-connection.html また一般ユーザーのホームディレクトリの下に .sshと言う名前のフォルダを使って、 authorized_keysという名前のファイルに 公開鍵で使用する文字列を書き込んでいます。 ○環境 クライアントPC:windows8.1 ターミナルソフト:TeraTerm Pro サーバー:Linux(CentOS6.0)

  • TeraTarmでSSH接続設定について

    さくらインターネットさんのVPSの環境を作りたいと 初期設定を行っておりますが恥ずかしながらはじめの一歩目で躓いております。 これまでレンタルサーバは利用しておりましたが、サーバの運用は初心者です。 用語など理解出来ていない部分も多いです。 こんな状況でご質問するのも申し訳ないのですが アドバイスを頂けると大変助かります。 何卒よろしくお願い致しますm(__)m ---------------------------------------- ◎やろうとしている事 ローカル環境で作成した公開鍵をサーバに設定しTeraTarmで接続出来るようにしたい。 公開鍵の登録はTeraTarmで接続してviでauthorized_keysに貼り付ける方法。 ---------------------------------------- ◎環境 サーバ OS CentOS 6 x86_64 ローカル環境 OS Windows7 ---------------------------------------- ◎sshd_configで初期値から変更した箇所 Port 10000 PermitRootLogin no MaxAuthTries 3 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PermitEmptyPasswords no PasswordAuthentication no AllowUsers ユーザ名 ChallengeResponseAuthentication no UsePAM no ---------------------------------------- ◎.sshディレクトリ、authorized_keysのパーミッションと所有者 ls -l .ssh -rwx------ 1 ユーザ名 root 397 Jun 14 11:13 authorized_keys ls -l authorized_keys -rw------- 1 ユーザ名 root 397 Jun 14 11:13 authorized_keys ---------------------------------------- ◎sshデバッグモードログ ssh -v localhost OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to localhost [::1] port 22. debug1: connect to address ::1 port 22: Connection refused debug1: Connecting to localhost [127.0.0.1] port 22. debug1: connect to address 127.0.0.1 port 22: Connection refused ssh: connect to host localhost port 22: Connection refused ---------------------------------------- ◎ログ less /var/log/secure Jun 14 11:34:16 www2310uf sshd[1104]: Received signal 15; terminating. Jun 14 11:34:16 www2310uf sshd[1344]: Server listening on 0.0.0.0 port 10000. Jun 14 11:34:16 www2310uf sshd[1344]: Server listening on :: port 10000. Jun 14 11:45:56 www2310uf sshd[1344]: Received signal 15; terminating. Jun 14 11:45:56 www2310uf sshd[1378]: Server listening on 0.0.0.0 port 10000. Jun 14 11:45:56 www2310uf sshd[1378]: Server listening on :: port 10000. Jun 14 12:36:17 www2310uf sshd[1443]: Connection closed by ***.***.**.*** ---------------------------------------- ※備考 12:30頃に.sshディレクトリとauthorized_keysのパーミッションに 誤りがあったため変更しました。 末行のIPアドレスは私のものです。 それ以外の部分はポート10000番が塞がっているという意味なのでしょうか 調べてみても意味がよく理解出来ず困っております・・・ どなたかアドバイスを頂けないでしょうか。 よろしくお願い致しますm(__)m