のーずいだんぷ

主に自分用メモですが、もしかしたら誰かの役に立つかもしれません

DeepLearning&xR開発用PCを構築する 〜その2:ssh & mDNS設定編〜

タイトルの通り、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

sshd_config
sshd_config-最終設定

3.mDNSの設定

これまでの設定でsshで認証することができるようになっている。 ubuntuでが以下のようにするだけでホスト名でログインできるようになる。

$ sudo apt install avahi-daemon

これで例えばsshでプライベートIPアドレスをhostname.localにするとログインできるようになる。 (ネットワークの機器監視ツールでみるとmDNSが設定されていることが確認できる。)

mDNS設定完了
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

ssh-copy-idで公開鍵を渡す - Qiita

~/.ssh/configについて - Qiita

シリーズ

www.nooozui.com

www.nooozui.com