ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

sshの設定メモ

(2007-12-24 初稿 - 2021-08-25 転記・修正)

はじめに

このページは、DebianLinuxRaspberry Pi等でsshを利用するためのメモ。

sshは安全性が高くネットワークの端末を操作できる。

今更だが、Rapsberry用に書き換える部分があったので修正した。

インストール

Debianの場合

$ sudo apt install ssh

Raspberry Piの場合

以下の図のとおり、メニュー「設定」、「Raspberry Pi の設定」、「インターフェース」タブを選択して、「SSH:」の有効にチェックを入れる。

f:id:hymd3a:20210713141120p:plain

Raspberry Pisshサーバの起動

簡単な使い方

$ 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 をリモートホストにコピーすることにより、パスフレーズ認証ができるようになる。
debianRaspberry 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を設定する上で、参照させて頂いたサイトは以下のとおり。

debianubuntuともに、パッケージが用意されていますので、インストールは簡単。

sudo apt-get install sshfs

(fuse-utils と libfuse2 もインストールされる)

続いて、ユーザー名がhogeの場合は、以下のようにfuseグループに追加する。

sudo adduser hoge fuse

念のために、以下で自分のユーザ名がfuseグループに追加されているか確認する。

less /etc/group

fuse:x:hoge」のようになっていれば、大丈夫。

最後にマウント・ポイントを作成する。
筆者は、一般ユーザとしてマウントする場合は、自分のホームディレクトリにmntというディレクトリを作り、マウントするのが好み。

mkdir ~/mnt

一旦、ログアウトし、再ログイン。

sshfsの使い方

使い方も簡単である。

192.168.0.1のマシンのマウントは以下のようにする。

sshfs 192.168.0.1: ~/mnt

lsコマンドでリモートホストのファイルが見えるか、また、cpコマンドでコピーができるか確認する。

続いて、アンマウントの方法。

fusermount -u ~/mnt

使ってみると、想像していた以上に便利だ。

関連ページ