ssh/scp/sshfsの基本的な使い方について記載します。
Table of Contents
1 openssh-serverのインストール
Ubuntu 16.04 / Debian 8の場合は以下のとおりです。
$ sudo apt install -y openssh-server $ sudo systemctl enable ssh # enabled by default $ sudo systemctl start ssh # started by default
Fedora 24の場合は以下のとおりです。
$ sudo dnf install -y openssh-server $ sudo systemctl enable sshd $ sudo systemctl start sshd
CentOS 7の場合は以下のとおりです。
$ sudo yum install -y openssh-server $ sudo systemctl enable sshd $ sudo systemctl start sshd
2 公開鍵認証を利用してパスワード入力を省略する
SSHの認証に公開鍵認証を用いることで、パスワードの入力を省略できます。WindowsをSSHクライアントとして使う場合はteraterm等をお使いください。
2.1 クライアント側(Linux/Unix)
公開鍵を作成します。passphraseを空にしておきます(何も入力せずにRETキーを押す)。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hiroom2/.ssh/id_rsa): Created directory '/home/hiroom2/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hiroom2/.ssh/id_rsa. Your public key has been saved in /home/hiroom2/.ssh/id_rsa.pub. The key fingerprint is:
${HOME}/.ssh/に秘密鍵id_rsaと公開鍵id_rsa.pubが作成されます。
$ ls -l ~/.ssh total 8 -rw------- 1 hiroom2 hiroom2 1675 6月 29 17:26 id_rsa -rw-r--r-- 1 hiroom2 hiroom2 399 6月 29 17:26 id_rsa.pub
id_rsa.pubをサーバ側にコピーします。この時点ではまだパスワード入力が必要です。
$ scp .ssh/id_rsa.pub <server>:${HOME}/
2.2 クライアント側(Windows)
teratermで公開鍵を作成します。
SSH KeyGeneratorを選択します。
デフォルトの設定のRSAと2048ビットのままでGenerateを押します。
Key passphraseは空にしたままでSave public keyとSave private keyを押します。
id_rsa.pubをサーバ側にコピーします。
以降はサーバ側でid_rsa.pubを${HOME}/.ssh/authorized_keysに選択した後に実行します。
SSH Authenticationを選択します。
ユーザ名を入力し、Private key fileに先ほど作成したid_rsaを設定します。OKを押します。
Save setupを選択して設定を保存します。以下のファイルを上書きします。
C:\Program Files (x86)\teraterm\TERATERM.ini
New connectionからサーバのIPアドレス/ホスト名を入力します。OKを押します。
SSH認証にデフォルトでid_rsaが利用されています。OKを押すことでサーバに接続できます。
2.3 サーバ側
クライアントで作成したid_rsa.pubを${HOME}/.ssh/authorized_keysに追加します。
$ cat id_rsa.pub >> ${HOME}/.ssh/authorized_keys
これ以降はパスワード入力は不要となります。
3 ホスト毎にknown_hostsを使わないようにする
sshではクライアント側の${HOME}/.ssh/known_hostsにサーバの公開鍵を保存し、サーバのなりすましを検知できるようにしています。これはセキュリティを高める上で有用ですが、仮想マシンを頻繁につくり変えるような場合には不向きです。そこで特定のネットワークアドレスやドメインの場合はknown_hostsを使わないようにします。
$ cat .ssh/config Host 192.168.11.* StrictHostKeyChecking no UserKnownHostsFile=/dev/null Host *.hiroom2.com StrictHostKeyChecking no UserKnownHostsFile=/dev/null
4 scpコマンドでファイルを転送する
クライアント側からサーバへscpコマンドでファイルを転送します。scpコマンドはopenssh-client/openssh-clientsパッケージに含まれます。
$ sudo apt install -y openssh-client # Ubuntu 16.04 / Debian 8 $ sudo dnf install -y openssh-clients # Fedora 24 $ sudo yum install -y openssh-clients # CentOS 7
ファイルの場合は以下のとおりです。
$ scp <path-to-file> <server>:<path-to> $ scp <server>:<path-to-file> <path-to>
ディレクトリの場合は以下のとおりです。
$ scp -r <path-to-dir> <server>:<path-to> $ scp -r <server>:<path-to-dir> <path-to>
4.1 WinSCP
5 sshfsでsshサーバのディレクトリをマウントする
apt、yum、dnf、homebrew等でsshfsをインストールします。
$ sudo apt install -y sshfs # Ubuntu 16.04 / Debian 8 $ sudo yum install -y sshfs # CentOS 7 with EPEL repository $ sudo dnf install -y sshfs # Fedora 24 $ brew install sshfs # OSX
マウントする場合は以下のとおりです。
$ sshfs ubuntu-16.04-sshfs.hiroom2.com:/home/hiroom2 mnt $ ls mnt/ Desktop Downloads Pictures Templates bin mnt Documents Music Public Videos examples.desktop src
アンマウントする場合は以下のとおりです。
$ fusermount -u mnt # Run "umount mnt" on OSX
なお、Windows 10で動作するsshfsクライアントは現状ないです。多分、win-sshfsがそのうち対応するでしょう。