PASE環境

9. SCPとは

SCP(=Secure Copy Protocol)とは SCH上で異なるLinuxプラットフォーム間で行う
ファイルコピーのことである。

例えばこのように使うことができる。

scp -tt -l quattro@192.168.1.128:/etc/hosts /TEST/hosts

※ -ttを指定しないと日本語が文字化けする。

quattro: Linux のユーザー名
192.168.1.128 Linux の IP アドレス
/etc/hosts 転送元の Linux のファイル名
/TEST/hosts 転送式の IBM の IFS のファイル名または
ディレクトリー名

つまり

scp (相手Linuxユーザー名)@(相手先IPアドレス):(コピー元ファイル ) (コピー先DIRまたはファイル名)

という構文であるが
IBM iのコマンドに慣れているIBMユーザーにとって覚えずらい構文である。
そこで Python.400では

                            SCP ファイル転送  (SCP)                         
                                                                            
 選択項目を入力して,実行キーを押してください。                             
                                                                            
IP アドレス  . . . . . . . . . .   '192.168.1.128'                          
 ユーザー  . . . . . . . . . . .   'quattro'                                
 転送方向  . . . . . . . . . . .   *TOI          *FROMI, *TOI               
FROM ファイル  . . . . . . . . .                                            
                                                                            
                                                                            
TO ファイル  . . . . . . . . . .                                            
                                                                            
                                                                            
 ファイルの置換えまたは追加  . .   *NONE         *NONE, *ADD, *REPLACE      

のようにコマンド: SCPが用意されている。
さらに実際の業務で SCPコマンドを使う必要はあまりないはずである。

Python.400で SCPが使用される場面は開発者のPCに保存されているPythonソースを
IBM iのPASE環境にコピーするときだけである。
その場面でも *LOCAL と指定するだけで自分のPCのIPアドレスは自動的に読み取られるので
開発者がSCPを意識して操作する必要はあまりない。

■ PASE環境の SCP の問題点

 ここからは SCPの内部の問題点の話であるが
これは弊社の備忘録のようなものであるので
参考程度にしておくだけで十分である。
 読者は SCPを使ってファイル・コピーができることを
理解して頂くだけで十分である。

 さて以前に SSHは

①公開鍵/秘密鍵による機密保護
②パスワードによる機密保護

 の2つの方法が用意されていると紹介した。

しかし IBM Redbook によれば
Redbook 「Securing Communications with OpenSSH on IBM i5/OS

※ RedBookとはホワイト・ペーパーよりさらに詳しい技術解説のことを意味する
  技術文書であり英文でのみ公開されている。
  IBMはRedPaperと称しているが一般的にはRedBookと呼ぶ。

 PASE環境の SSHは
公開鍵/秘密鍵があればそれを使い、無ければパスワードを
要求する。

という処理を行うのだが

PASE環境の SCP は
  公開鍵/秘密鍵があればそれを使い、無ければエラーにっなってしまう

ということでパスワードによる機密保護の選択枝はない。
 
これは一般的な UNIXやLinuxの仕様に反している。
また 調べたところ AIXの仕様でもない。
AIXでも UNIXの仕様に準じていてエラーになることはない。
PASE環境下の SSHは OpenSSHの一部であるはずなので
正常に動作すればパスワード認証もできるはずなのであるが
OS Ver7.1~7.5まではパスワード認証は認められない。

一部のインターネット・サイトでは公開鍵による方法しか
紹介されていない場合がほとんどであるが
PASE環境ではパスワード認証に失敗したからであろう。
RedBookの情報がわからないので公開鍵の方法だけを
やたら詳しく紹介しているのではないかと思う。
この公開鍵/秘密鍵の設定方法は別途くわしく紹介する。

なおPython.400ではこのような難しい設定は開発支援サービスとして
弊社が行うのでユーザーは学習する必要はない。

■ WindowsやLinux上からSCPを起動する場合は問題ない

前述の話はIBM iから SCPを起動するときの問題であり
WindowsやLinuxからSCPを起動するときは
パスワード認証も問題なく使うことができる。