REHL9からは、SCPが非推奨になり、廃止じゃない、廃止じゃない
なので、RHEL9を作って、検証してみようと思う。
検証
OSのバージョンは9.3
Red Hat Enterprise Linux release 9.3 (Plow)
■ 送信側(何回も):
[root@test9-1 tmp]# scp rhel-9.3-x86_64-dvd.iso 192.168.100.42:/var/tmp/ 14% 1505MB 375.2MB/s 00:22
■ 受信側:
まずは、ファイルがちゃんととんできた。
[root@test9-2 tmp]# ll rhel-9.3-x86_64-dvd.iso
-rw-r--r-- 1 root root 1580400640 2月 3 09:29 rhel-9.3-x86_64-dvd.iso
って、詳細も見てみよう。
Modify/ChangeとBirthのが同じじゃないことがわかった
なので、SFTPを使っている可能性が高い
ここで、SCPとSFTPの違いことが現れた
SFTPは、前回の転送が中断された場合、中断されたところから再開できる
SCPは、単純に新しい転送するだけなので、上書きになる
(「2024-01-29」にもやったので、「Birth」が今日の日付になっていないけど、結論には影響しないと思う)
[root@test9-2 tmp]# stat rhel-9.3-x86_64-dvd.iso
File: rhel-9.3-x86_64-dvd.iso
Size: 1574895616 Blocks: 3075968 IO Block: 4096 通常ファイル
Device: fd00h/64768d Inode: 405280 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-01-29 13:24:33.746254258 +0900
Modify: 2024-02-03 09:06:27.389337241 +0900
Change: 2024-02-03 09:06:27.389337241 +0900
Birth: 2024-01-29 13:24:33.746254258 +0900
プロセスも見てみよう。
■送信側
「3347」でSFTPを使っていることがわかった。
(「901」だけど、scpコマンドがbashから実行され、「egrep "ssh|scp"」で表示されない)
[root@test9-1 ~]# ps -efww | egrep "ssh|scp"
root 845 1 0 1月29 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 889 845 0 1月29 ? 00:00:00 sshd: root [priv]
root 900 889 0 1月29 ? 00:00:00 sshd: root@pts/0
root 969 845 0 1月29 ? 00:00:00 sshd: root [priv]
root 971 969 0 1月29 ? 00:00:00 sshd: root@pts/1
root 3311 845 0 09:03 ? 00:00:00 sshd: root [priv]
root 3313 3311 0 09:03 ? 00:00:00 sshd: root@pts/2
root 3346 901 17 09:05 pts/0 00:00:00 scp rhel-9.3-x86_64-dvd.iso 192.168.100.42:/var/tmp/
root 3347 3346 32 09:05 pts/0 00:00:01 /usr/bin/ssh -x -oPermitLocalCommand=no -oClearAllForwardings=yes -oRemoteCommand=none -oRequestTTY=no -oForwardAgent=no -s -- 192.168.100.42 sftp
root 3349 3314 0 09:05 pts/2 00:00:00 grep -E --color=auto ssh|scp
■受信側
受信側も同じく、SFTPを使っているね。
[root@test9-2 ~]#
[root@test9-2 ~]# ps -efww | grep ssh
root 856 1 0 1月29 ? 00:00:00 sshd: root [priv]
root 868 856 0 1月29 ? 00:00:00 sshd: root@pts/0
root 969 1 0 1月29 ? 00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root 14082 969 0 09:06 ? 00:00:00 sshd: root [priv]
root 14085 14082 26 09:06 ? 00:00:01 sshd: root@notty
root 14086 14085 16 09:06 ? 00:00:01 /usr/libexec/openssh/sftp-server
おもしろいこと
ここでは、おもしろいことができる。
なんだというと、sshサーバ側の設定で、sftpが無効できる。
無効された場合、sftpが使えなくなって、通常のscp(sftp使わず)に戻るかというおもしろい検証ができるわけ。
早速受信側にSSHD設定を変更し、やってみよう。
変更前後のdiifは↓
(viやサービスの再起動なども書くのは、面倒くさいから割愛)
[root@test9-2 tmp]# diff /etc/ssh/sshd_config_orig /etc/ssh/sshd_config
123c123
< Subsystem sftp /usr/libexec/openssh/sftp-server
---
> #Subsystem sftp /usr/libexec/openssh/sftp-server
■送信側
もう一度SCPしてみると、エラーがでた
[root@test9-1 tmp]# scp rhel-9.3-x86_64-dvd.iso 192.168.100.42:/var/tmp/
root@192.168.100.42's password:
subsystem request failed on channel 0
Connection closed
振り返り
- 9系でSCPを使うなら、受信側にはsftpを有効にする必要
- 9系でネットワークが不安定の環境でもSCPが使える
- 8系でsftpが無効になっている場合、9系で設定踏襲にするとSCPが使えないのは要注意
- 8系でも9系でも、scpはsshdのポート経由でファイル転送するのが変わらないので、ネットワーク的には変更なし
以上