windowsファイル転送バトル

実家に帰省するなどすると色々あり、例えばwindows8自体のPC(i3, メモリ4GB)を無理やりwindows10にしたかろうじて動いているPCからデータを別のwindowsPCに移動させるなどのミッションが生じる。

ここで外付けHDDやUSBメモリを使わないことを考えると、windows間で自宅ネットワークを活用してファイル転送をしたい。 ということで様々な方法でwindows間のファイル移動を試みた。

windows自体のファイル共有機能を使う -> 失敗

windows ファイル移動 ネットワーク越し」的なのでぐぐるとまず出てくるやつ。

support.microsoft.com

ネットワーク共有設定からファイル探索を許可した上で、共有したいファイルを選択するもの。 しかしこの方法ではwindowsPCが古すぎるのが原因か、微妙に違うSSIDに接続しているのが原因かは定かではないが、転送を受ける側のPCで転送元のPCがネットワーク探索できなかった。ので断念。

新パソコン側からsftpで旧パソコンからデータを回収する => 失敗

ファイル共有機能が使えなかったので、別の方法でネットワーク越しにファイルを転送することを考える。 市販のファイル転送ソフトは金かかるので却下。無料で行きたい。 windowsはデフォルトでrsyncが使えないこともあり、外部アプリを入れずに素手で戦う場合の次の一手はsftpになった。 windowsWinSCPというイカしたGUIアプリがあるのでこれを使うと便利。

forest.watch.impress.co.jp

sftpを使うということはつまりssh接続が必要になるのでsshdを動かす必要がある。 なんと最近のwindows10はアプリストア的なところからsshdをインストールできるので古い方のPCでインストールをしようとしたところ、なぜかGUI経由だと20%でインストールが止まる。そんな。

調べたらPowerShellでインストールする方法があったので試したらこれで行けた。やはりCUIは正義。 docs.microsoft.com

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# Start the sshd service
Start-Service sshd

# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'

# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
    Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
    Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

これでsshdは元気に動き出したのだけど、sshしようとすると同頑張ってもPermissionDeniedになる。そんな。22番ポートは空いてるのに。

ユーザー側の設定がだいぶカオスな事になっていそうなので、ログインユーザーでログインするのを諦めてadministratorでsshできるように仕込んだ。

qiita.com

これでsshできたぞ!!! sftp/scpや!!! と思ったら、なんとadministratorでsshすると、移動したいファイルがsshした先では確認できるのに、sftp/scpすると確認できない(転送されない)という自体が出た。 所有権の問題かと思ってtakwownで所有権を直したのだけど、効果は無く、キレそう。

atmarkit.itmedia.co.jp

ということでこの方法も諦めて、逆の発想で新PCから旧PCにsftpしてファイルを持ってくることにした

旧パソコン側からsftpで新パソコンにデータを送る ==> 成功

新パソコン側でsshdの設定をし、旧パソコンにWinSCPをまずいれる。 このインストールが曲者で、メモリが4GBしかないのでなんか良くわからないアプリが立ち上がるとすぐ固まる。 起動時にその部分さえケアできればあとは新PCに接続し、ファイルを転送すればすんなりクリアだった。

というわけでファイル転送バトルでした。年末という感じですね。良いお年を。