Windowsから Linuxに sshで接続する

昨今のWindowsSSHクライアントは何が使われているのかなと検索してみたら、「Windows版 OpenSSHが出た」とのことで従来より簡単にSSH接続できるようになったみたい。
なので、PowershellからLinuxに繋いでみることにします。

(結論としては、使えますが別に使いやすくはないです。なんか不安定だし、所々機能不全。他のクライアントを使った方が色々便利に作業できると思います。とはいえ Windowsに初めから入ってるので取り急ぎ繋ぎたい場合には良いかと。というか「Windows版 OpenSSHが出た」という言葉通り、WindowsSSHサーバーにして LinuxWindowsという接続ができるようになったことの方が有意義ですね……)

まずホスト Linux側。CentOSで試しました。OpenSSHサーバーのインストールとサービスの起動確認をします。

CentOS 6 の場合
$ rpm -qa | grep ssh
libssh2-1.4.2-2.el6_7.1.x86_64
openssh-askpass-5.3p1-118.1.el6_8.x86_64
openssh-5.3p1-118.1.el6_8.x86_64
openssh-clients-5.3p1-118.1.el6_8.x86_64
openssh-server-5.3p1-118.1.el6_8.x86_64

(インストールされていなかったら # yum install openssh-server で入れてください)

$ chkconfig --list | grep sshd
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

# service sshd status
openssh-daemon (pid  2116) を実行中...

CentOS 7 の場合。
# systemctl start sshd
# systemctl enable sshd
# systemctl status sshd とか。

次にクライアント Windows側。GitHubからOpen-SSHをダウンロードし、Zipファイルを解凍し適当な場所に置きます。

Releases · PowerShell/Win32-OpenSSH · GitHub

[システムのプロパティ](Windows+R に sysdm.cpl)→[詳細設定タブ]→[環境変数]のユーザー環境変数にPathを追加します。私はD:\Download\OpenSSH-Win64;
Windowsを再起動させておきます。

さて、環境が整ったらWindowsからLinuxへ繋いでみます。

PS D:\> ssh XXXXXX@192.168.10.2 (アドレスは<user>@<hostname>などに適宜変更を。パスを通す前なら PS D:\> .\Download\OpenSSH-Win64\ssh.exe XXXXXX@192.168.10.2)
The authenticity of host '192.168.10.2 (192.168.10.2)' can't be established.
RSA key fingerprint is SHA256:XXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no)?  
yes

XXXXXX@192.168.10.2's password:
Last login: Thu Jun 16 23:38:54 2016 from 192.168.10.2

入れました。

$ pwd
/home/XXXXXX

ただ、日本語が文字化けする。

$ ls
NVIDIA-Linux-x86_64-304.131.run 繝繧ヲ繝ウ繝ュ繝シ繝・ 繝・Φ繝励Ξ繝シ繝・ 繝・せ繧ッ繝医ャ繝

news.mynavi.jp

・日本語が文字化けする!
PowerShellのメニューから「プロパティ」を選択して、「フォント」タブで「MSゴシック」に変更する。

というわけで、一度 exitしてPowerShellに戻って、プロパティから「MSゴシック」に変更して、OKを押して閉じようとしたらエラーが出た。

---------------------------
ショートカットの更新エラー
---------------------------
ショートカットを変更できません:

ショートカットが削除されていないか、または名前が変更されていないか確認してください。
---------------------------
OK   
---------------------------

管理者権限でPowerShellを実行する必要があるようです。

https://support.microsoft.com/ja-jp/kb/2524386

PowerShellを右クリックして[管理者権限で実行]する。[プロパティ][フォント][MSゴシック] 変更できた。
次にchcpで文字エンコードを 65001 に変更する。

PS C:\Windows\system32> chcp
現在のコード ページ: 932

PS C:\Windows\system32> chcp 65001
Active code page: 65001

再度挑戦。

PS C:\Windows\system32> ssh XXXXXX@192.168.10.4
XXXXXX@192.168.10.4's password:
Last login: Fri Jun 17 XX:XX:XX 2016 from 192.168.10.2
$ pwd
/home/XXXXXX
$ ls
NVIDIA-Linux-x86_64-304.131.run  ダウンロード  テンプレート  デスクトップ

いけた。

でも接続を切るときに反応が悪かったり色々と不安定。あまりお勧めしない。

後日やる。

# vi /etc/hosts.deny
ALL:all 

# vi /etc/hosts.allow
sshd:192.168.10.3

PAMによるアクセス制限

/etc/ssh/sshd_config
UsePAM yes

linuxgroupに属しているユーザのみをsshでサーバにログインできるように設定

# vi /etc/security/access.conf 
-:ALL EXCEPT linuxgroup:ALL 
# vi /etc/pam.d/sshd 
account required pam_access.so

パスワード方式ではなく公開鍵方式へ。など、後日。

it.srad.jp 懐かしい。

ttssh2.osdn.jp

PuTTY: a free SSH and Telnet client

やっぱりこのあたりですかね。

/* -----codeの行番号----- */