.netrcファイルについて知らなかったので調べてみました
はじめに
Heroku CLI のセットアップ中に作成された ~/.netrc
というファイルについて。
これは一体どういったものなのか、いつ使われるものなのかを調べてみました。
検証環境
Man ページを参照
以下のページを見つけました。
netrc, .netrc - ftp のためのユーザー設定ファイル
...
このファイルには、ファイル転送プロトコル ( File Transfer Protocol ) クライアント ftp ( 1 ) のための、設定情報と自動ログイン情報が書かれている。
FTP サーバに接続する際の認証情報を保存しておくファイルということです。
curl
関連の情報を調べているときにも .netrc
の名前を見た記憶があるので、登場背景の FTP 以外でも使われるようになっているということでしょうか。
~/.netrc
の有無による動作の違いを確認
検証準備 ( FTP サーバコンテナを起動 )
FTP サーバを構築し、接続時に ~/.netrc
が利用されるかを確認してみます。
FTP サーバはローカル PC 上の Docker 環境に構築することとしました。
以下の Docker イメージを利用させていただきました。
接続ユーザを用意するためにはコンテナ起動時に以下の環境変数を設定すればよいと書かれています。
FTP_USER_NAME
: 接続ユーザFTP_USER_PASS
: 接続パスワードFTP_USER_HOME
: 接続ユーザのルートディレクトリ
ここではそれぞれ、 genzouw
/ passpass
/ /home/ftpusers/genzouw
を設定しました。
無事起動できました。
~/.netrc
がないとき
起動した FTP コンテナに接続してみます。ftp localhost
コマンドを実行します。
~/.netrc
ファイルが存在しないときは接続のためにユーザ名、パスワードの入力を求められます。
ここではコンテナ起動時に設定した genzouw
/ passpss
を指定します。
問題なく接続できました。
~/.netrc
があるとき
今度は ~/.netrc
ファイルを用意した状態で接続してみます。
ここでは細かい記法に触れませんが、設定項目は以下の3つです。
machine
= 接続サーバーlogin
= 接続ユーザpassword
= 接続パスワード
接続してみます。
今度はユーザ、パスワードの入力は求められませんでした。
何度も接続するFTPサーバの場合には、入力の手間を減らすことができます。
注意
便利な機能ではありますが、 .netrc に平分でパスワードを記載しておくのはセキュリティの観点から言って不安が残ります。
GPGを使ってパスワードを暗号化するという方法をとることがあるそうですが、Herokuでは node-netrc-parser というツールを使ってパスワードの項目だけ暗号化しているようです。
ディスカッション
コメント一覧
まだ、コメントがありません