LoginSignup
77
57

More than 3 years have passed since last update.

【sshサーバー】ubuntu sshサーバー構築〜LAN内外からのssh接続まで

Last updated at Posted at 2020-12-15

はじめに

自宅に自作PCのubuntu環境を用意したため、ssh接続を試みた。
ホスト環境へのsshサーバーの準備から、LAN内外からのアクセス方法までを学習したため、その内容を整理する。
参考になったと思った方は、LGTMクリックいただけると幸いですm(__)m

流れ

  1. ホスト側(ubuntu)のsshサーバー導入
  2. クライアント側での鍵の生成
  3. ホスト側での公開鍵の設定
  4. LAN内からのssh接続
  5. 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アドレスを手動で設定する
Screenshot from 2020-12-16 02-43-42.png

ゲートウエイはルータの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

私のルータの場合以下のような設定画面が表示されます。
Screenshot from 2020-12-16 02-19-20.png

ポートマッピング設定をクリック
Screenshot from 2020-12-16 02-36-16.png

NATをエントリする
Screenshot from 2020-12-16 02-56-19.png
※あくまでも私のルータの例であり、細かい内容はルータごとに異なる

② ドメインの取得

MyDNSというサイトでドメインを取得します.右上のjoin usから登録しログイン
https://www.mydns.jp/

DOMAIN INFOからドメインを取得
image.png

取得したドメインに対し,IP ADDR DIRECTから先程調べたグローバルIPアドレスをIPv4のところに入力し、ドメインとグローバルIPを紐づける
Screenshot from 2020-12-16 04-03-23.png

グローバル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
/etc/hosts
#以下の1行を追加して保存
<固定したサーバのローカルIP> <MyDNSで取得したドメイン名>

⑤ 自宅サーバへのSSH

以下で自宅サーバへつながれば完了

ssh -p 5504 -i ~/.ssh/home_ubuntu ドメイン名

また、.ssh/configファイルにssh接続の条件を記載しておけば、簡単にssh接続できる

~/.ssh/config
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

77
57
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
77
57