タイトルの通り、DeepLearning&xR開発用PCを構築するシリーズのその2のssh周りの設定を行う。
基本的にDeepLearningのマシンとして使用するが、基本的には外部サーバとして使用し直接ログインして使用することは考えていない人向けである。
なのでmDNS
を使ってちょっとでも余計な手間をなくすことにした。後一応外部セキュリティ周りは設定しておこうというというのが趣旨である。
なお「mDNS」ってなんだ?となる人も多いと思うが、これはざっくり説明するとsshするときにホストを指定すると思うが、ssh <user-name>@<host-name>.local
でログインできるようにするものである。
言い方を変えると、本来ならばDNSサーバを使わずに同一ネットワークに存在する機器の名前解決を行う設定である。
例えばMacではデフォルトでこのmDNSの設定に対応してるので、確認してみてほしい。
1. Linux設定編
rootパスワードの設定
まずはubuntuでrootユーザのパスワードを設定しておく。 (デフォルトはなし)
$ sudo su - passwd ...新しいパスワードを入力してsuccessfullyが出ればok
2. sshで接続できるようにするための準備
(サーバ側)openssh-serverをインストール
$ sudo apt install openssh-server
(サーバ側)sshd_configを編集
$ sudo vi /etc/ssh/sshd_config //ポート変更(できればデフォルトの22はウェルノウンポートなので攻撃対象になりやすく、やめておくべき) port <任意のポート> //ルートでのログイン禁止 PermitRootLogin no //RSA認証の有効化 RSAAuthentication yes //パスワードによる認証を許可 PasswordAuthentication yes //空のパスワードは拒否 PermitEmptyPasswords no //チャレンジレスポンス認証を不許可 ChallengeResponseAuthentication no
再起動する
$ systemctl restart sshd
(クライアント側)公開鍵をサーバへ登録する。
方法はscpで送ったりといくつかあるが、macだとssh-copy-id
コマンドで簡単に渡せるのでこれを使用する。
$ ssh-copy-id -i <送信する公開鍵> -p <sshのポート> <サーバのログインユーザ名>@<サーバのホスト名(プライベートIPアドレス)
別の方法としてはscpで送る方法もある。
$ scp ~/.ssh/<公開鍵> <use_name>@<private-IP>
また鍵を作成していない場合は、こちらの様にして公開鍵と秘密鍵を作成する。
(サーバ側)パスワード認証を外す
$ sudo vi /etc/ssh/sshd_config //パスワードによる認証を禁止 PasswordAuthentication no
これでauthorized_keyに登録したサーバのみ接続できるようになった。
正直上記でも十分だと思うが、こちらを参考にいくつか設定を変更した。(portは非掲載) man doc
3.mDNSの設定
これまでの設定でsshで認証することができるようになっている。 ubuntuでが以下のようにするだけでホスト名でログインできるようになる。
$ sudo apt install avahi-daemon
これで例えばsshでプライベートIPアドレスをhostname.local
にするとログインできるようになる。
(ネットワークの機器監視ツールでみるとmDNSが設定されていることが確認できる。)
なおhost名がわからない場合は以下で確認できる。(おそらくデフォルトだとubuntu
だと思う)
$ cat /etc/hostname
4. ssh_configの設定
あとは毎回 ssh -i **** -p **** user@hostname
とするのがめんどくさいので、これらをssh hostname
でログインできるように設定する。
設定はssh_configに次のように記載すれば良い。
# サーバーへ定期的(今回は60秒毎)に生きている報告をする(全体的に記述を有効にする場合は先頭辺りに書いておくといい) ServerAliveInterval 60 # 個別に有効にしたい場合は、個別の設定に行を開けないで追記しておくといい Host 任意の接続名(hoge) HostName ホスト名 User ユーザー名 Port ポート番号 IdentityFile 鍵へのPATH(例えば~/.ssh/hoge.key) ServerAliveInterval 60
参考
Ubuntuは初期状態ではrootが使えない(パスワード未設定)ようになっている - 偏差値40からのLinux
自宅のUbuntuサーバに外からsshでアクセスする | Futurismo