[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

ssh port forwarding

Local forward

local の 11111 番 port へアクセスし、remote から 10.10.10.10:2222 へ接続する。

$ ssh -L 11111:10.10.10.10:2222 remote

Remote forward

remote の 11111 番 port へアクセスし、local から 10.10.10.10:2222 へ接続する。

$ ssh -R 11111:10.10.10.10:2222 remote