print 'Hello YKazu'

('Python', 'Javascript')

sshまとめ

SSHの認証方式

パスワード認証方式

リモートホストのユーザ名・パスワードで認証

公開鍵認証方式

パスフレーズ無しの秘密鍵ならば、パスフレーズ入力無しで認証される SSHサーバに公開鍵、SSHクライアントに秘密鍵を配置。

OpenSSH

SSHプロトコルのソフト。 SSHクライアントとSSHサーバの両方を持つ。 WindowsのGit Bashでも使用可能。 sshコマンド、rsync、Gitで利用される。

sshコマンド

$ ssh foo@foo-host

秘密鍵ファイルの指定

$ ssh -i ~/.ssh/id_rsa foo@foo-host

秘密鍵は無指定ならば、デフォルトで、~/.ssh/id_rsa、~/.ssh/id_dsa、~/.ssh/identity

SSHクライアント設定ファイルの指定

$ ssh -F ~/.ssh/config foo@foo-host

※設定ファイルは、デフォルトで、~/.ssh/config

ポート番号の指定

$ ssh -p 2222 foo@foo-host

リモートホストに公開鍵を登録する

~/.ssh/authorized_keys

リモートホストのユーザfooの場合、 [foo-host]/home/foo/.ssh/authorized_keysに、 SSHクライアントの公開鍵id_rsa.pubを追記しておく。

authorized_keysには、fooで接続してくる、 SSHクライアントの分だけ、 公開鍵が何行も登録される。

SSHクライアント設定ファイル

~/.ssh/config

  1. Host sshコマンドで指定するホスト名
  2. HostName リモートホストIPアドレス、またはホスト名
  3. User リモートホストのユーザ名
  4. Port SSHのポート番号
  5. IdentityFile 秘密鍵ファイルのパス

フィンガープリント

~/.ssh/known_hosts

SSHクライアントは、リモートホストの情報 (リモートホスト公開鍵のフィンガープリント)を保存する。

実装は、ホスト名またはIPアドレスから始まリ、 鍵の暗号方式(ssh-rsa)、公開鍵からなるエントリのリスト。

SSHクライントは、IPアドレスリモートホストの持つ公開鍵で、 リモートホストを識別する。

SSHクライアントは、known_hostsに登録されている公開鍵と、 リモートホストから取得した公開鍵を照合し、ホスト認証する。

ハードリンクとシンボリックリンクのiノード

ファイル参照の順序

  1. ユーザが、ファイルパス入力(たとえば、cp -p app.js)
  2. システムが、ディレクトリ(バイナリファイル)を参照し、そのエントリから、該当ファイルのiノード番号を取得
  3. iノード番号(iノード番号は、たとえば、ls -i app.jsでユーザは確認可能)からiノードを参照
  4. iノードが持っているディスクアドレスを取得
  5. ディスクアドレスからデータ参照

ディレクトリは、それが納めているファイルのリストで、リストのエントリは「ファイル名 - iノード番号」のペア。

実行しっ放しコマンドの落ちてもまた実行させる無限ループ

# 無限ループ
while :
do
  # pingやtopなどのコマンド
  ping localhost
  ret=$?

  # 終了ステータスによる死活監視
  if [ $ret -ne 0 ]; then
    echo "status code: $ret"
    echo "pingを再実行する"
  fi
done