アタマのひきだし

webプログラミング情報メモ

SSHの基本

sshの基本のプラクティスに戻ってきました。今回の目的は、クライアント側、MacOS Xから、サーバ側、Debianへ公開鍵認証(SSH2)を使ってのリモート接続し、DebianMac画面から遠隔操作できるようにすることです。

この全体像を把握して「サーバ側、Debianで用意するもの」「クライアント側、MacOS Xで用意するもの」を、理解しながら進めていくことで、混乱を減らせるかと思います。いろいろ失敗してから「この手順ですすめたらよかったかな…」ということで書いています。参考程度にご覧ください。

【サーバ側、Debiansshをインストール

下記のサイトを参考にして、インストールしました。自分の場合、apt-getに変更してインストール。

ググっていると、この sshが商用なのか、OpenSSHなのか気になったので、バージョンが知りたくなりました。調べる方法は下記のコマンドでわかります。DebianMacどちらも使えました。ちなみにMac側のsshは標準で入っているようなので、何もしていません。

$ ssh -V

-> OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

【サーバ側、Debiansshd_configを変更

Debianのディレクトリ、/etc/ssh をls コマンドで見ると、いろいろとファイルがあり、sshd_configがあるはずです。この設定を変更しておきます。ファイルのコピーをつくってから、設定を変更します。ポートの番号22を適当な数字に変更。あとで、クライアント側から鍵を送るときにこのポート番号を指定して、送るようにします。

下記のサイトを参考、ヒントにしてみてください。

【クライアント側、Mac】公開認証鍵を作成

鍵をMac OS X 側で作成し、拡張子.pubがついている方を、コマンドラインで、サーバへ送るようにします。コマンドにオプションをつけることで、鍵の種類が変わります。下記のサイトをヒントに。

$ ssh-keygen -t rsa (SSH2、RSA暗号方式の鍵)

鍵を送ると、初回ではこんな画面がでるかもしれません。この画面でyesすると、 known_hostsファイルに、公開鍵が登録され、接続できるようになるかと思います。

# ssh test@192.168.0.1 The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established. RSA key fingerprint is aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:kk:ll:mm:nn:oo:pp. Are you sure you want to continue connecting (yes/no)?

【クライアント側、Macssh接続を試みる

コマンドを入力して、接続できるか試してみます。

$ ssh -p xxxxxx(ポート番号) hoge(ユーザ名)@xxx.xx.xxx.xx(IPアドレス)

http://i.gyazo.com/c4ff62d658598b1e12e64377745730a5.png

【サーバ側、Debiansshd_configを再び変更

設定を変更することで、Rootログインを禁止したり、公開鍵でのログインのみできるようにします。再起動方法や、設定ファイルについては下記のサイトをヒントに。

PermitRootLogin yesのyesをnoに変更。

PasswordAuthentication yesをnoに変更。

sshdの再起動させて、変更を有効にする

$ sudo etc/init.d/ssh restar

鍵の認証について

すこし認証のことについて書いておきます。認証は、known_hostsのファイルをチェックしているようで、 接続する毎にサーバから受信した公開鍵とknown_hostsに記録されている公開鍵を照合し、信頼するサーバか否かを確認しているようです。 公開鍵暗号方式が違ったり、異なる公開鍵だったり、known_hostsのファイル情報を変更、削除したりすると、メッセージが表示され、ログインがうまくいかなくなったりします。

自分の場合、sshをアンインストール、インストールしたり、挙句に下記のようなメッセージが書いてある画面が表示されてしまいまいした。原因は、known_hostsファイルのようで、サーバ側の情報(IPアドレスなど)記述されていた部分を消して、ログインできるようになりました。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

ssh-agent

公開鍵認証について代行してくれるようなのですが、ほかに調ることが大量にあるので、それらが、落ち着いてから、再度しらべるようにします。なのでこの項目は一旦保留にします。

その他、関係ありそうなこと

■ 設定ファイルについて

「初期設定ファイル」または「環境設定ファイル」というようです。 設定ファイルに関してもまだ調べ途中ですが、設定ファイルの存在、仕組みを知っていくことで、理解が深まるかと。

いまのOSは、設定ファイルを自動的に作り出すプログラムも数多く存在しているようで、たしかDebianで「.bashrc」 をはじめて作ったときも、すでに設定が書き込まれていました。行頭にこのシャープ→# があることで、コメントアウトされており、設定を外すとアクティブになります。ただし、コマンドラインではなく、ただのコメントとして使っている部分もあるので注意。

そして、Unix系OSはマルチユーザータイプのため、設定したファイルに”.(ドット)”を付けて隠しているようです(ls -a コマンドで表示される)。そして、設定ファイルにどんな拡張子をつけるかルールが決まっていない?ようで、だいたい、config、init、rc等の文字列が含まれていることが多いようです。ソフト名のディレクトリ内に拡張子無しのconfigという名称のファイルを置く場合もあるらしいです。

■ デーモンについて

裏方として、自動で動いてくれている、プログラムだと解釈しています。なにか設定をかえたら下記のコマンドを入力して再起動をかけたりします。下記のサイトを参考にしています。※Ubuntu(Debian)

$ sudo /etc/init.d/ssh restart

判断基準としては、名前に◯◯◯dとついているようです。このデーモンプログラム、DebianMacOS Xとでは違いがあり、Debianはinitd、MacOS Xはlunchdとなっています。

さらにいうと、すべてのプロセスには、順番があり コマンド $ pstreeで表示できます。すべてのプロセスのはじまりは、Debianでは「init」ではじまっていて、このプロセスが動いてから、lsなどのコマンドがうごいています。MacOS Xの場合は「lunchd」。