アーカイブ

‘SSH’ タグのついている投稿

$HOME/.ssh/configでsshを便利に使う

2010 年 8 月 3 日 takus コメントはありません



sshのコマンドを毎回叩くのが面倒なため、aliasに記述する、シェススクリプトを使うといったことをやっていたが、便利そうなものを見つけたので使ってみた。

$HOME/.ssh/config を編集すると、ホスト毎に様々なパラメータ設定して簡単にsshできる。
今回作ったconfigファイルは以下のようなもの。

Host serverA
  User      user_name
  HostName  servera.example.com
  IdentityFile    ~/.ssh/servera_key 
 
Host serverB
  HostName 192.168.0.1
  ProxyCommand ssh serverA nc %h %p
 
Host serverC
  User      user_name
  HostName  serverc.example.com
 
Host *
  EnableSSHKeysign    yes 
  TCPKeepAlive        yes 
  ServerAliveInterval 15
  ServerAliveCountMax 3

こうしておくと、

ssh serverA

とするだけで、serverAにsshできるようになる。

ServerBの設定はServerAを踏み台にして、ServerAと同じLAN内のマシンにsshする際に使える。ただ、踏み台となるマシンにncコマンドが入っていない場合は使うことができない。秘密鍵でなく、パスワードでログインする場合はServerCの設定のようになる。最後にある*は全てのサーバにある設定を使うような場合に設定する。これは必ず一番下に書く必要がある。

参考サイト

SSH_CONFIG (5)
$HOME/.ssh/configを活用していますか?

カテゴリー: Linux タグ:

SSHでポートフォワーディング

2010 年 8 月 1 日 takus コメントはありません

研究室内においてあるLinuxサーバへ自宅から接続したかったのだが、そのサーバはローカルネットワークからの接続しか許可されていないため、

自宅PC(PC) → 認証サーバ(authorize.example.com) → 目的のサーバ(192.168.0.1)

という風に、いったん目的のサーバと同じネットワークにあるコンピュータにログインし、内部ネットワークからの通信としてサーバに接続を行う必要があるため、SSHのポートフォワーディング機能でこれを実現した。

ポートフォワーディングって?

特定のポートに送られてきたデータを、SSHで暗号化した上で、任意のホスト、ポートに対して転送する機能である。この機能は、基本的には外部ホストからLAN内にアクセスしたいが、外部から直接アクセスは危険な場合に使用するのに使われる。具体的には、外部ホストから、
  • LAN内のみからアクセスできるサーバに接続
  • 自宅WindowsPCに外部ホストからリモートデスクトップ接続
のようなことを行うことが可能になる。

手順

目的のサーバ(192.168.1.0)を起動して、認証サーバからSSHできることを確認しておく。

PCのターミナル(puttyなども可能)から認証サーバに接続し、目的のサーバのローカルIP(192.168.0.1)に向けてトンネルを掘る。ちなみに、ここではPCのローカルポート1234を目的のサーバ(192.168.0.1)の22にフォワードしている。

$ ssh -L 1234:192.168.0.1:22 user@authorize.example.com
# SSH -L <ローカルポート番号>:<転送先ホスト>:<転送先ポート番号> <リモートホスト>

ここまでやっておけば、後はターミナルから、

$ ssh -p 1234 user@localhost

とすれば、目的のサーバへSSHが可能になる。


と、ちょっと回りくどいやり方ではあるが一応できるようになった。
ただ毎回やるのは面倒なのでもっと効率的な方法がないか模索していく予定。

カテゴリー: Linux タグ: