同じネットワーク内でMacからLinux (Ubuntu 18.04) にsshでアクセスする方法.
目次
環境
クライアント側
sw_vers
ProductName: macOS
ProductVersion: 11.5.1
BuildVersion: 20G80
ホスト側
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
Sponsored by Google AdSense
セットアップ手順
Ubuntu (ホスト) 側にopenssh-serverをinstall
もとからsshに関係するやつは入っていたらしいが,ホストになるためのものがそろってはないのでインストール.
apt-get update
やapt-get upgrade
は適宜.
sudo apt-get install openssh-server
IPアドレスを固定.
省略
秘密鍵と公開鍵をクライアント側で生成.
カレントディレクトリに鍵が生成されるので~/.ssh
に移動しておく.
cd ~/.ssh
鍵の生成
ssh-keygen -t rsa -f id_rsa_linux
-f XXX
でファイル名を指定できる.ファイル名を指定しないとデフォルトのid_rsa
として生成される.自分はgithubですでにsshを生成していたので,上書きされないようにファイル名を指定した.
一つの公開鍵秘密鍵で複数の場所に接続できるみたいだが,なんとなく分けてしまった.
- id_rsa: 秘密鍵
- id_rsa.pub: 公開鍵
公開鍵をホスト側に渡す.
色々なやり方があるみたいだが,自分は確実なUSBメモリを使った移動を行った.
その後それをMacからLinuxのDesktopに移動し,authorized_keysに公開鍵を登録した.
初回
ホスト側 (操作される側) で
mv Desktop/id_rsa_linux.pub .ssh/authorized_keys # ファイル名を変えて移動
自分の環境では空っぽの.sshディレクトリが作成されていたのでmkdir
をしていない.
2回目以降
ホスト側 (操作される側) で
cat Desktop/id_rsa_linux.pub >> .ssh/authorized_keys # 追記
接続が確認できたら,Desktopに置いてある公開鍵を削除.GUIで削除してもいいし,CUIでrm
とかで削除してもOK.
.ssh内にconfigファイルを作成
vim
で作成してもOK.自分はすでに別の接続先へのconfigを書いていたのでただ単にテキストエディタを開いて追記した.
Host linux
HostName <IPアドレス>
User <USER名>
Port 22
IdentityFile ~/.ssh/id_rsa_linux
こう設定すると,クライアント側 (操作する側) から
ssh linux
で接続できる.
それぞれの意味
- Host XXX:
ssh XXX
で接続するための名前. - HostName: 接続先のアドレス.物によってはグローバルでもできるが,今回は同じLAN内なのでIPアドレスを指定.
- User: ホスト側 (操作される側) のユーザー名.新しくUserを追加しているサイトも散見されたが,自分はすでにあるユーザー名を指定した.
- Port: ポート番号.sshは基本22なのでわかりやすさのため,22.
- IdentityFile: 公開鍵が収納されている場所.
ちなみに
configを設定しなくても毎回ベタ打ちすれば接続はできる.
このコマンドがさっきconfigを作成したときと同じことをベタ打ちしたもの.
ssh <USER名>@<IPアドレス> -i ~/.ssh/id_rsa_linux -p 22
どちらでも接続できた.
参考
- はじめてのssh
- Linuxが多分別のものであったが,とてもわかりやすかった.
- Linuxが違うのでしょうがないことにここでは,sshが入ってるかどうかみたいな部分やそれをインストールするコマンドがわからなかったが,全体の流れを掴むのにとても役立った.
- SSHの設定手順(Ubuntu18.04)とWindowsからのアクセス確認手順
- クライアントがWindowsではあったが,Ubuntuのバージョンが同じだったので参考になった.ここで,どのパッケージが入っていて,どのパッケージが入っていないかなど学んだ.
- ssh接続の基本(公開鍵認証方式) - Qiita
- authorized_keysの登録方法について学んだ.