(2007-12-24 初稿 - 2021-08-25 転記・修正)
はじめに
このページは、Debian等LinuxとRaspberry Pi等でsshを利用するためのメモ。
sshは安全性が高くネットワークの端末を操作できる。
今更だが、Rapsberry用に書き換える部分があったので修正した。
インストール
Debianの場合
$ sudo apt install ssh
Raspberry Piの場合
以下の図のとおり、メニュー「設定」、「Raspberry Pi の設定」、「インターフェース」タブを選択して、「SSH:」の有効にチェックを入れる。
簡単な使い方
$ ssh -l user remote.example.com # リモートホストにログイン $ scp test.txt user@remote.examle.com: # リモートホストにコピー
ローカルとリモートのユーザ名が同じ場合はuserは省略できる。
この段階では、パスワード入力によるログインになる。
パスフレーズによるログイン
パスワードよりも安全性が高いパスフレーズによるログインに変更する。
まずは、暗号鍵の作成をローカルホストで行う。
$ ssh-keygen -t rsa Generating public/private rsa key pair Enter file in which to save the key (/home/user/.ssh/id_rsa): # 暗号鍵の保存場所 デフォルトのままで良いので Enter Enter passphrase (empty for no passphrase): # パスフレーズを入力 Enter passphrase again: # 確認のために再度同じパスフレーズを入力
なお、パスフレーズは空白(Enterのみ)でも、安全性は確保されるとのこと。
以上で、~/.ssh に id_rsa と id_rsa.pub が生成される。
できあがった id_rsa.pub をリモートホストにコピーすることにより、パスフレーズ認証ができるようになる。
debian、Raspberry Piでは、便利なコマンドがあるので以下のように行う。
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote.example.com
コピー後、パスフレーズでログインできれば設定は成功。
また、リモートホスト側でパスフレーズ認証しか用いない場合は、安全性を高めるために以下を行い、パスワード認証できないようにする。
$ sudo vi /etc/ssh/sshd_config PasswordAuthentication の yes を no へと変更する $ sudo systemctl restart ssh # sshの再起動
なお、ssh_configとsshd_configの2つファイルがあるが、今回変更するのは、サーバーとしての設定ファイル sshd_config なので、間違えないように。
さらに便利に
リモートホストのプログラムの実行やファイルのコピー等ができて、大変便利なsshだが、以下の設定ファイルを作成することにより、入力が減りさらに便利になる。
~/.ssh/configファイルがない場合は、新たに作成し、以下の内容を書き込む。
$ vi ~/.ssh/config host hoge # 覚えやすいホスト名のalias HostName remote.example.com User user # リモートホスト側のユーザー名
上記の設定を行った場合は、sshのログインは以下のように簡略になる。
ssh hoge
なお、.ssh/configファイルにはこの他にも多数の設定ができるので、詳細は man ssh_configで調べてね。
scpの使い方
sshがインストールされていれば、scpも簡単に使える。
scp ~/Downloads/* 192.168.1.1:~/Downloads
リモートホストの名前が解決できれば、以下のようにコピーすることもできる。
scp ~/Downloads/* remote-pc:~/Downloads
ただし、最近気がついたが、リモート側のファイルをワイルドカードで指定してコピーしようとするとエラーになり、「そんなファイルはありません」等と冷たいメッセージが返ってきてしまう。
そんなときには、以下のようにダブルクォートすると良い。
scp "remote-pc:~/Downloads/*" ~/Downloads
sshfs
sshを利用したネットワーク越しのマシンの安全なマウントができる。
筆者は、職場から自宅のマシンや職場内の他のPCをマウントして利用している。
sshfsのインストール
最初に、sshfsを設定する上で、参照させて頂いたサイトは以下のとおり。
debianやubuntuともに、パッケージが用意されていますので、インストールは簡単。
sudo apt-get install sshfs
(fuse-utils と libfuse2 もインストールされる)
続いて、ユーザー名がhogeの場合は、以下のようにfuseグループに追加する。
sudo adduser hoge fuse
念のために、以下で自分のユーザ名がfuseグループに追加されているか確認する。
less /etc/group
最後にマウント・ポイントを作成する。
筆者は、一般ユーザとしてマウントする場合は、自分のホームディレクトリにmntというディレクトリを作り、マウントするのが好み。
mkdir ~/mnt
一旦、ログアウトし、再ログイン。
sshfsの使い方
使い方も簡単である。
192.168.0.1のマシンのマウントは以下のようにする。
sshfs 192.168.0.1: ~/mnt
lsコマンドでリモートホストのファイルが見えるか、また、cpコマンドでコピーができるか確認する。
続いて、アンマウントの方法。
fusermount -u ~/mnt
使ってみると、想像していた以上に便利だ。