#はじめに
自宅に自作PCのubuntu環境を用意したため、ssh接続を試みた。
ホスト環境へのsshサーバーの準備から、LAN内外からのアクセス方法までを学習したため、その内容を整理する。
参考になったと思った方は、LGTMクリックいただけると幸いですm(__)m
#流れ
- ホスト側(ubuntu)のsshサーバー導入
- クライアント側での鍵の生成
- ホスト側での公開鍵の設定
- LAN内からのssh接続
- LAN外からのssh接続
#1. ホスト(ubuntu)のsshサーバー設定
ssh-serverの導入
sudo apt install openssh-server
sshd_configファイルで設定の変更
sudo vim /etc/ssh/sshd_config
sshd_config = sshデーモンの設定ファイル(外部からssh接続されたときの設定)
ssh_config = ssh接続の設定ファイル(外部へssh接続するときの設定)
sshd_configファイルに以下内容を追加
#パスワードによる認証を許可
PasswordAuthentication yes
#後続プロセスのため一時的に許可を与える
設定を反映させるためにサーバを再起動
service sshd restart
#2. クライアント側での鍵の生成
公開鍵と秘密鍵を生成
(わかりやすいように鍵の名前をubuntu_homeに変更)
ssh-keygen -t rsa
#Enter file in which to save the key (/Users/xxxx/.ssh/id_rsa):/Users/xxxx/.ssh/ubuntu_home
#以降の問いはEnterでOK
公開鍵をホスト側へコピー(以下コマンドにより、公開鍵がホストの「~/.ssh」ディレクトリに格納される)
scp ~/.ssh/ubuntu.pub <ユーザー>@<ホストIPアドレス>:~/.ssh
※1 ホスト側のIPアドレスは「hostname -I」のbashコマンドで確認できる
※2 scp = Secure Copy
#3. ホスト側での公開鍵の設定
#authorized_keysへの公開鍵の書き込み
cd ~/.ssh
cat ubuntu.pub >> authorized_keys
rm ubuntu.pub
#権限の変更
cd ~
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
セキュリティー強化のため、秘密鍵でのアクセスに限定
#sshデーモンの設定変更
sudo vim /etc/ssh/sshd_config
#パスワードによるアクセスを禁止
PasswordAuthentication no
#設定を反映させるためにサーバを再起動
service sshd restart
#4. LAN内からのssh接続
ローカルIPの固定
wifi設定の歯車マークでIPアドレスを手動で設定する
ゲートウエイはルータのIPアドレスであり、PCのlocalIPアドレスの最後の数字を1に置き換えることで設定できる
以下コマンドでssh接続完了!
ssh -i ~/.ssh/home_ubuntu -l <ユーザー名> <ローカルIPアドレス>
#5. LAN外からのssh接続
##① port開放
ルーターの設定サイトにログイン
local IPアドレスの最後の数字を1に置き換えることでルータにアクセスできる(以下例)
PCのIPアドレス = http://192.168.10.114
ルータのIPアドレス = http://192.168.10.1
NATをエントリする
※あくまでも私のルータの例であり、細かい内容はルータごとに異なる
##② ドメインの取得
MyDNSというサイトでドメインを取得します.右上のjoin usから登録しログイン
https://www.mydns.jp/
取得したドメインに対し,IP ADDR DIRECTから先程調べたグローバルIPアドレスをIPv4のところに入力し、ドメインとグローバルIPを紐づける
グローバルIPアドレスの確認方法
curl inet-ip.info
##③ グローバルIPの自動更新
グローバルIPは固定IPでないと自動更新されてしまうのでDDNSで取得したドメインとの紐付けを再度行う必要がある
それを今回はcronで自動的に実行する
crontab -e
#以下の1行を追加して保存
#これで10分おきにMyDNSに対してHTTPリクエストを発行する
*/10 * * * * wget -q -O /dev/null http://(mydns.jp のマスターID):(mydns.jp のパスワード)@www.mydns.jp/login.html
##④ ヘアピンNAT回避
同一のネットワーク内からグローバルIPにアクセスしようとするとルータが対応していないと拒否される
以下で設定しておけば,拒否されなくなるので登録する
sudo vim /etc/hosts
#以下の1行を追加して保存
<固定したサーバのローカルIP> <MyDNSで取得したドメイン名>
##⑤ 自宅サーバへのSSH
以下で自宅サーバへつながれば完了
ssh -p 5504 -i ~/.ssh/home_ubuntu ドメイン名
また、.ssh/configファイルにssh接続の条件を記載しておけば、簡単にssh接続できる
Host home-ubuntu
HostName home-ubuntu.mydns.jp
IdentityFile ~/.ssh/home_ubuntu
User shota
Port 5504
TCPKeepAlive yes
IdentitiesOnly yes
以下コマンドだけで接続可能!
ssh home-ubuntu
参考になったと思った方は、LGTMクリックいただけると幸いですm(__)m
#参考
・ubuntu自宅サーバにsshで外部からアクセス
http://frute.hatenablog.com/entry/2018/11/19/003056
・Ubuntu 18.04 LTSで固定IPアドレスを設定する方法【デスクトップ編】
https://linuxfan.info/ubuntu-1804-desktop-static-ip-address
・SSH Tips
https://qiita.com/syui/items/cb2bf66ceb94e92058ff