SSHクライアントのCONFIG

sshを使う時に少しだけ便利にするtipsを備忘録として投稿します。
クライアントにはLinuxを想定しています。

sshクライアントの設定ファイルには/etc/ssh/ssh_configと$HOME/.ssh/configがあります。
ssh_configにはシステム全体で行う設定を記述し、$HOMEのconfigにはユーザーごとの設定を記述します。
cloud9(Ubuntu)から自宅のサーバ(CentOS)へログインする際に各ファイルを調べました。

  • /etc/ssh/ssh_configの設定

[html]
Host *
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
[/html]

デフォルトでは上記の指定でした。
最初のHostにある”*”はワイルドカードの指定で、sshコマンドで指定するどのサーバに対しても下のSendEnvなどの指定は同じものを使用するという意味でした。
設定値の内容は以下のサイトを参考にさせて頂きました。

SendEnv 環境変数名1 環境変数名2 …
環境変数の転送を指定
sshサーバへログインする際、クライアント側からサーバへ転送する環境変数を指定します。
なお、SendEnv設定項目を使うにはサーバ側の AcceptEnv設定項目でその環境変数の転送が許可されている必要があります。
HashKnownHosts { no | yes }
ホスト名をハッシュ化するか否かの指定
$HOME/.ssh/known_hostsファイルに新たにホスト公開鍵を加える際、追加したホスト名を自動的にハッシュ化するか否かを指定します。
GSSAPIAuthentication { no | yes }
GSSAPI認証の可否
SSH2プロトコルを使用している場合、ユーザ認証時にGSSAPI認証を許可するか否か指定します。
GSSAPIDelegateCredentials { no | yes }
GSSAPI証明書転送の可否
SSH2プロトコルを使用している場合、サーバ側にGSSAPI証明書の転送を許可するか否かを指定します。
sshコマンドの-kオプションはGSSAPIDelegateCredentials noに相当します。

最初のSendEnvやHashKnownHostsは何となくすぐに意味が分かりました。
ロケール関連の環境をクライアントにあわせているのと$HOME/.sshディレクトリにあるknown_hostsに書かれている内容が暗号化されていましたので。
GSSAPI(Generic Security Service Application Programming Interface)については

メカニズムに依存しない方法でアプリケーション用にセキュリティサービスを提供する機能インタフェース

と以下のサイトに書かれていたのですが、イマイチ内容が分かりませんでした。
どうもサーバログイン時にKerberos認証を行わせるっぽいのですが。

ssh_configの方は特に設定を変えずに$HOME/.ssh/configの方へ以下を設定しました。

  • $HOME/.ssh/configの設定

[html]
Host サーバのホスト名
Hostname サーバのipアドレス
User root
Port 22
Compression yes
[/html]

Hostにはsshコマンドで指定するホスト名を指定します。
自宅サーバのホスト名を指定しました。

HostName ホスト名(もしくはipアドレス)
ログインするサーバのホスト名もしくはサーバのipアドレスを指定します。(user@hostのhost部分に相当)
User ユーザ名
ログインするユーザ名を指定します。(user@hostのuser部分に相当)
Port ポート番号
接続するポート番号を指定します。(-pオプションに相当。デフォルトは22)
Compression yes
圧縮を有効にします。

上記の設定でcloud9の方にconfigを作り、sshログインしてみました。

[html]
# ssh サーバ名
root@サーバのipアドレス’s password:
root@サーバのホスト名 #
[/html]

今まではssh root@サーバのipアドレスというように長いオプションを指定していたのですが、短くて済むようになりました。
圧縮を有効にしたことによって体感速度が変わったかと言われるとあまり感じませんでした。