FTP/FTPS/SFTP/SCPに対応した無料のWindows向けファイル転送ツールとして定番の「WinSCP」ですが、Linux環境に接続してファイル転送するときに「これってどうやって設定すればいいのかなぁ?」と困ることがありました。
具体的には、WinSCPでLinuxサーバーに一般ユーザーでログイン後root権限で操作する方法や、非表示のファイル(ドットファイル)を表示させる方法です。
そこでここでは、WinSCPで一般ユーザーでSSH接続後root権限で操作できるようにする方法と、非表示のファイル(ドットファイル)を表示させる方法を紹介します。
目次
一般ユーザーで接続後root権限で操作する
インターネットに公開しているLinuxサーバーなどでは、rootでのSSH接続を禁止して一般ユーザーでしかSSH接続できないケースが多く、そのようなサーバーにWinSCPから一般ユーザーでSSH接続してroot権限で操作するには、以下の設定が必要です。
SFTP接続する場合
接続先のサーバー側の設定
まず、接続先のLinuxサーバーで、WinSCPからログインする一般ユーザーがroot権限で操作できるよう設定します。
「hogehoge」という一般ユーザーで接続する場合は、sudoersファイルに以下の内容を追記します。(なお、sftp-serverのパスは環境により異なり、以下はRedHat互換のLinuxの場合のパスです。)
# visudo
hogehoge ALL=NOPASSWD: /usr/libexec/openssh/sftp-server
WinSCPの設定
次に、WinSCPを起動し接続情報を⼊⼒する画面で「転送プロトコル」で「SFTP」を選択してから「設定」をクリックします。
「高度なサイト設定」画面が表示されるので、左側のメニューから「SFTP」を選択し「SFTPサーバ」欄に「sudo /usr/libexec/openssh/sftp-server」と記述し「OK」をクリックします。
以上で、指定した一般ユーザーでSSH接続したときのみroot権限での操作が可能となります。
SCP接続する場合
接続先のサーバー側の設定
まず、接続先のLinuxサーバーで、WinSCPからログインする一般ユーザーがroot権限で操作できるよう設定します。
「hogehoge」という一般ユーザーで接続する場合は、hogehogeユーザーをwheelグループに追加します。
# usermod -G wheel hogehoge
次に、sudoersファイルを以下のように編集します。
# visudo
#%wheel ALL=(ALL) ALL ←コメントアウトする
%wheel ALL=(ALL) ALL NOPASSWD: ALL ←コメントアウトを外す
WinSCPの設定
次に、WinSCPを起動し接続情報を⼊⼒する画面で「転送プロトコル」で「SCP」を選択してから「設定」をクリックします。
「高度なサイト設定」画面が表示されるので、左側のメニューから「SCP/シェル」を選択し「シェル」欄から「sudo su -」を選択して「OK」をクリックします。
以上で、指定した一般ユーザーでSSH接続したときのみroot権限での操作が可能となります。
非表示ファイルを表示する
Linux環境では「 . (ドット)」から始まるフォルダーやファイルは通常は非表示となり、WinSCP上でもデフォルトでは表示されませんが、以下の設定で表示させることができます。
まず、WinSCPを起動し接続情報を⼊⼒する画面で「ツール」から「環境設定」をクリックします。
「環境設定」画面が表示されるので、左側のメニューから「パネル」を選択し、右側の項目で「隠しファイルを表示する」にチェックを入れます。
以上で、ローカル側とリモート側の双方にある隠しファイルを表示できます。
ちなみに、リモートマシンへ接続後、ショートカットキー「Ctrl + Alt + H」を入力することでも、隠しファイルの表示・非表示を切り替えられます。
あとがき
上に紹介したテクニックは、いずれもWinSCPでLinuxマシンに接続するときに必ずと言ってよいほど役立つテクニックです。ご活用あれ。