SSH

みなさんこんにちは。9月18日からiOS12が降ってきましたね。私はすっかりSiriショートカットに夢中です。だって、そのままSSHクライアントにできるんですよ?

一般ユーザで実行したコマンドやシェルスクリプトの標準出力がそのままスマホに返ってきて、しかもクリップボードに一撃でコピーできる(そしてiOS上のアプリにペーストできる)のはわかったのですが、SSH接続先でroot権限のコマンドを使いたいじゃないですか。というわけで実験してみました。

…続きを読む

リモートホストにSSH接続できることを確認してからrsyncする

リモートホストにSSH接続できることを確かめてからrsyncしたいなー、というそれだけのキッカケで書いたシェルスクリプト。恐らくシェルスクリプト初心者にも読みやすい作り、のはず。

単にrsyncする前にsshでログインして「:」だけ叩いて帰ってきて「どうだった?」と終了ステータスを捕まえて、sshが正常終了だったらrsyncする、というそれだけなんですが、終了ステータス捕まえるためだけに何秒も待たされるのが嫌だったので、sshコマンドのあとに「ConnectTimeout 1」オプションをつけています。

#!/bin/bash
LANG=C
set -eux

FROM_DIR=${HOME}/N/U/L/L/P/O/P/O/P/O
TO_DIR=${HOME}/M/A/R/I/N/A
SSH_USER=nullpopopo
TO_HOST=sakura

# ------------------------------------------------------------ #
# by @nullpopopo
# First Commit 2017/11/15
# ------------------------------------------------------------ #

SSH_TIMEOUT_STATUS=$(
     ssh -o "ConnectTimeout 1" ${TO_HOST} :     > \
     /dev/null 2>&1                             ; \
     echo $?
    )

if [ ${SSH_TIMEOUT_STATUS} = 0 ];
then
  ssh ${TO_HOST} mkdir -p ${TO_DIR}
  rsync -ahvz                           \
    ${FROM_DIR}/*                       \
    ${SSH_USER}@${TO_HOST}:${TO_DIR}/
fi

はい、答えだけ知りたい人はここで回れ右(つめたいなあ 偉そうだなあ)。

…続きを読む

複数の接続元からSSH接続をさせたい、かつそのうち1つのユーザーは動的IPアドレスから接続させなければならない、という要件はよくある話です。こうしたユーザーのためにSSHで使用するTCP/22番ポートをフルオープンにするのは躊躇われるかと思いますので、こんな仕組みを考えてみました。

  • ユーザー「hamada」は固定IPアドレスからTCP/22へssh接続させる
  • ユーザー「nullpopopo」は動的IPアドレスからTCP/12345へssh接続させる

下記手順を行う前に、あらかじめ hamada ユーザーと nullpopopo ユーザーを useradd コマンドで作成しておいてください。

Ansible徹底入門 クラウド時代の新しい構成管理の実現

…続きを読む