Wi-fi経由のSSH、FTPでRaspberry Pi 3とWindowsを接続

メモ。
Windows側からRaspberry Pi 3(OSはRaspbian)にSSHまたはFTPで接続してみました。
逆方向はやっていません。

sudo raspi-config
(メニューはバージョンにより違うので下記と違う場合は自分でSSH有効の箇所を探す)
5 Interfacing Options→P2 SSH→
「Would you like the SSH server to be enabled?」でYesを選択
そしてリブート?

WindowsからのSSH接続にはTeratermを使用した。
Windows側からRaspberry Piのシェル(bash)を操作しコンソール(文字だけでグラフィックなし)のプログラムを動かせる。
viなどのスクリーンエディタも使える。(正確にはviクローン)
Windows側にXmingなどのX-Windowサーバーを入れればWindowsでRaspberry Pi 3のX-Windowのソフトを実行できるらしいが試していない。
Raspberry Pi 3側の接続ローカルIPは、Raspberry Pi 3側で、ifconfigと打って、wlan0: のinetのIPで取得できる。
(IPの例、192.168.1.100)
IPは固定ではなく変わるが固定にする方法は今のところ知らない。
IPを固定しないと日常的に使うのは面倒くさいな。
とりあえず、Raspbianデフォルトのユーザー名 pi と パスワード raspberry でログインできる。
セキュリティー的にはパスワード変更とかSSH用のユーザー追加してそれを使うのがいいとは思うが私の場合はwi-fi圏内にパソコンを持った人が住んでいないので別にしなくてもいいかな。
私の村では半径10km以内にSSHの知識がある人がいるとも考えにくい。
TeratermのメニューのFile→SSH SCP…でSSH経由の単一ファイルの送受信も可。
複数ファイルの送受信はできないのでZIPなどでアーカイブするかWinSCPという別ソフトを使うかFTPを使うかになると思う。

個人的にFTPでファイルを送受信したいと思ったのでvsftpdというFTPサーバーをRaspberry Pi 3にインストールした。
sudo apt-get update
sudo apt-get install vsftpd
ウェブ公開ではなくローカルだけでやる前提で設定した。
設定ファイルは/etc/vsftpd.conf
テキストエディタvi を使う場合はsudo vi /etc/vsftpd.confのようにviを起動。(要viの知識)
設定ファイルは元々ある内容は不用意にいじらないまま次のように設定した。
(行頭が#だと設定として意味のない無効な行になり、行頭の#を外すと設定として意味のある行になる。#から行末までは設定としては無視される)
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

テキストファイル用の改行コードの変換設定はしなかったがもしするなら、
ascii_upload_enable=YES
ascii_download_enable=YES

FTPを使えるユーザーを指定するファイルの、
/etc/vsftpd.chroot_listに、ユーザー名を書く。
とりあえず、pi と書けば使える。
FTP用のユーザーを作ったほうがセキュリティー的には良い。
ウェブ公開用途ならもうちょっと設定を考えたほうがいいかも知れないがする予定ないので考えない。

Raspberry Pi 3起動時にvsftpdを自動起動にする。
sudo update-rc.d -f vsftpd defaults

手動でvsftpd起動sudo service vsftpd start
vsftpd停止sudo service vsftpd stop

Windows側のftpコマンドはディレクトリごとの送受信ができなかったので、昔インストールしていたncftpというコマンドラインのソフトで、put -R ディレクトリ名としてディレクトリごと複数ファイルを送信できることを確認。
ncftpをWindowsにどうやってインストールしたかは昔過ぎて覚えていない。
ncftpの起動は、ncftp -u ユーザー名 -p パスワード IP
あくまで例ncftp -u pi -p raspberry 192.168.1.100
ncftpはなぜか少なくともユーザー名を起動オプションに書かないとFTPサーバーの設定でanonymous(匿名)を有効にしていない場合エラーになる。
普通のftpコマンドと操作上の互換が少しとれていないのが残念だ。
GUIのffftpでもいいかも知れないが長いパス名(深い階層)に対応しているのかな?

SSHは暗号化するので暗号化の必要ない状況下で使っても無意味に負荷がかかり速度低下もする。
ssh -c noneという暗号化しないオプション使えるんかな?
Teratermの暗号化させない指定は知らないな。
暗号化要らないのでtelnetを使いたいがtelnetはX-Windowソフトの起動に対応していないらしいしWindowsではデフォルトでは使えないとか世間がなるべくtelnetを使わせない方向で動いているのでまあSSHでもいいか。
SSHでファイル転送するSCPも別に暗号化要らないしローカルの自分のパソコン同士での転送ならなおさら要らないのでSCPよりFTPのほうがいいかなと思った。

逆方向のRaspberry Pi 3からWindowsにアクセスするにはWindowsにSSHサーバーとかFTPサーバーインストールすればいいんだろうけどそれするぐらいならVNCとかxrdpとかSambaにしたほうがいいかな。