[Linux] ssh

sshログイン

$ ssh -i ~/.ssh/{秘密鍵} {ユーザー名}@{接続先IP} -p {ポート番号}

~/.ssh/config

リモートサーバーへssh接続する際に利用される設定ファイル。

▼設定例

ServerAliveInterval 57

#############################################
## Project: xxx
#############################################
Host %dev-bastion-xxx
    HostName xx.xxx.xx.xxx
    User developer
    IdentityFile "/Users/{USER_NAME}/.ssh/path/to/{秘密鍵}"
    TCPKeepAlive yes
    IdentitiesOnly yes

“Host” の頭にプレフィックスをつけるとわざわざ “~/.ssh/config” 内を覗かずに “ssh xxx” が可能。
例えば “Host %xxx” とすると “ssh {TAB}” で補完が可能。

接続

$ ssh %dev-bastion-xxx

転送

$ scp ./test.html %dev-bastion-xxx:/home/developer/

認証鍵の生成

$ ssh-keygen -t rsa -C ""

ssh接続ユーザーの作成

[ec2-user ~]$ sudo adduser newuser
[ec2-user ~]$ sudo su - newuser
[newuser ~]$
[newuser ~]$ mkdir .ssh
[newuser ~]$ chmod 700 .ssh
[newuser ~]$ touch .ssh/authorized_keys
[newuser ~]$ chmod 600 .ssh/authorized_keys
# 任意のテキストエディタで authorized_keys ファイルを編集し、取得したキーペアのパブリックキーをファイルに貼り付ける。

トラブルシューティング

Permission denied

エラー確認
/var/log/secure

 60 Sep 29 15:44:32 xxx sshd[12334]: Accepted publickey for {User_Name} from xx.xx.xx.xx port 28579 ssh2: RSA xx:xx:xx:a9:2d:c7:1c:c9:c7:a5:28:db:xx:xx:xx:xx
 61 Sep 29 15:44:32 xxx sshd[12334]: pam_unix(sshd:session): session opened for user {User_Name} by (uid=0)
 62 Sep 29 15:52:48 xxx sudo:      {User_Name} : TTY=pts/0 ; PWD=/home/{User_Name} ; USER=root ; COMMAND=/bin/su -
 63 Sep 29 15:52:48 xxx su: pam_unix(su-l:session): session opened for user root by {User_Name}(uid=0)
  • ~/.ssh/authorized_keysの確認
  • ディレクトリ権限の確認
    • /home/{User_Name}/.ssh: 0700
    • /home/{User_Name}/.ssh/authorized_keys: 0600

bash

更新中。

前提知識

判定ステータス

  • 終了ステータス1: 偽
  • 終了ステータス2: 真

Shebang
スクリプト冒頭に”#!”を記述、その後にファイル名を書くと、実行属性を付けてファイルを実行可能になる。
この冒頭行を”Shebang”と言う。

各種コマンド

test.confにxxxは含まれるか。

$ grep -i "xxx" 'test.conf' ; echo $?

file_Aの方が新しいか。(逆は-ot)

$ test file_A -nt file_B

入力操作

# カーソルを先頭に
{Ctrl + a}

# カーソルを行末に
{Ctro + e}

# 入力文字を全て消す
{Ctrl + u}

.bashrcと.bash_profile

サーバ構築時、必要最低限の設定を行っておく。

  • Linuxにログイン後、ホームディレクトリにある”.bash_profile”->”.bashrc”の順に実行される。
  • 既にログインしている状態で、新しくbashを起動した場合は、”.bashrc”の実行される。

~/.bash_profile

  • ログイン時に一回のみ実行される。
  • 環境変数を設定する。
# .bash_profile

# Get the aliases and functions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

PATH=$PATH:$HOME/bin
export PATH

~/.bashrc

  • bashを立ち上げる度に実行される。
  • エイリアスを設定する。
  • CLI補完の設定をする。
  • その他シェル関数を設定する。
# .bashrc

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ls='ls --color'
alias l='ls -1'
alias la='ls -1A'
alias ll='ls -1alF'

# history にコマンド実行時刻を記録
HISTTIMEFORMAT='%Y-%m-%dT%T%z '

# history数を50000に指定
HISTSIZE=50000

各ユーザー共通で設定する

ユーザー作成時に以下の大元のファイルが読み込まれる為、ユーザー共通で設定したい場合は下記ファイルを編集する。

ls -la /etc/skel/
合計 20
drwxr-xr-x  2 root root 4096  8月 13 11:16 .
drwxr-xr-x 83 root root 4096  8月 29 01:38 ..
-rw-r--r--  1 root root   18  8月 16  2016 .bash_logout
-rw-r--r--  1 root root  193  8月 16  2016 .bash_profile
-rw-r--r--  1 root root  124  8月 16  2016 .bashrc

関連記事

ShellScript文法確認サイト