ssh キーによるログイン#
git で ssh キーを生成する#
お兄ちゃん、SSH キーを生成するのはとても役に立つことだよ!以下は SSH キーを生成する手順だよ:
-
ターミナルまたはコマンドプロンプト(Terminal または Command Prompt)を開く。
-
以下のコマンドを入力して SSH キー対を生成する:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
"[email protected]"
をあなたのメールアドレスに置き換えてね。 -
システムがキーの保存場所とファイル名を尋ねてくる。デフォルトでは、SSH キーはユーザーのホームディレクトリ内の
.ssh
フォルダに保存される。 -
プライベートキーを保護するためにパスワードを設定することを選択できる。これは任意だよ。パスワードを設定した場合、プライベートキーを使用する際にそのパスワードを入力する必要があるよ。
-
生成が完了したら、指定したディレクトリに 2 つのファイル:
id_rsa
(プライベートキー)とid_rsa.pub
(パブリックキー)が見つかるよ。 -
パブリックキー(
id_rsa.pub
ファイルの内容)は、Git ホスティングサービスや他の必要な場所に共有する必要がある。プライベートキーは適切に保管し、無闇に共有しないでね。
SSH キーを生成した後、パブリックキーをあなたの Git ホスティングプラットフォームのアカウントに追加すれば、SSH を通じて安全にリポジトリと通信できるようになるよ!プライベートキーをしっかり保管して、紛失や漏洩に注意してね〜 他に質問があれば、お兄ちゃんがいつでもここで助けるよ!😸
第一歩#
1、あなたの github ssh にパブリックキーをアップロードする
https://github.com/settings/keys
2、以下のコードを入力する
#自動でパブリックキー証明書を上書きし、パスワードログインを禁止する
bash <(curl -fsSL git.io/key.sh) -og あなたのGITHUBユーザー名 -d
または #自動でパブリックキー証明書を上書きし、パスワードログインを禁止し、同時にログインポートを 58058 に変更する
bash <(curl -fsSL git.io/key.sh) -og あなたのGITHUBユーザー名 -p 58058 -d
スクリプトのソースコード
#!/usr/bin/env bash
#=============================================================
# https://github.com/P3TERX/SSH_Key_Installer
# 説明: GitHub、URLまたはローカルファイルを介してSSHキーをインストールする
# バージョン: 2.7
# 作者: P3TERX
# ブログ: https://p3terx.com
#=============================================================
VERSION=2.7
RED_FONT_PREFIX="\033[31m"
LIGHT_GREEN_FONT_PREFIX="\033[1;32m"
FONT_COLOR_SUFFIX="\033[0m"
INFO="[${LIGHT_GREEN_FONT_PREFIX}INFO${FONT_COLOR_SUFFIX}]"
ERROR="[${RED_FONT_PREFIX}ERROR${FONT_COLOR_SUFFIX}]"
[ $EUID != 0 ] && SUDO=sudo
USAGE() {
echo "
SSH Key Installer $VERSION
使用法:
bash <(curl -fsSL git.io/key.sh) [options...] <arg>
オプション:
-o 上書きモード、このオプションは最初に有効
-g GitHubからパブリックキーを取得、引数はGitHub ID
-u URLからパブリックキーを取得、引数はURL
-f ローカルファイルからパブリックキーを取得、引数はローカルファイルパス
-p SSHポートを変更、引数はポート番号
-d パスワードログインを無効にする"
}
if [ $# -eq 0 ]; then
USAGE
exit 1
fi
get_github_key() {
if [ "${KEY_ID}" == '' ]; then
read -e -p "GitHubアカウントを入力してください:" KEY_ID
[ "${KEY_ID}" == '' ] && echo -e "${ERROR} 無効な入力です。" && exit 1
fi
echo -e "${INFO} GitHubアカウントは: ${KEY_ID}です"
echo -e "${INFO} GitHubからキーを取得しています..."
PUB_KEY=$(curl -fsSL https://github.com/${KEY_ID}.keys)
if [ "${PUB_KEY}" == 'Not Found' ]; then
echo -e "${ERROR} GitHubアカウントが見つかりません。"
exit 1
elif [ "${PUB_KEY}" == '' ]; then
echo -e "${ERROR} このアカウントのSSHキーは存在しません。"
exit 1
fi
}
get_url_key() {
if [ "${KEY_URL}" == '' ]; then
read -e -p "URLを入力してください:" KEY_URL
[ "${KEY_URL}" == '' ] && echo -e "${ERROR} 無効な入力です。" && exit 1
fi
echo -e "${INFO} URLからキーを取得しています..."
PUB_KEY=$(curl -fsSL ${KEY_URL})
}
get_loacl_key() {
if [ "${KEY_PATH}" == '' ]; then
read -e -p "パスを入力してください:" KEY_PATH
[ "${KEY_PATH}" == '' ] && echo -e "${ERROR} 無効な入力です。" && exit 1
fi
echo -e "${INFO} $(${KEY_PATH})からキーを取得しています..."
PUB_KEY=$(cat ${KEY_PATH})
}
install_key() {
[ "${PUB_KEY}" == '' ] && echo "${ERROR} SSHキーは存在しません。" && exit 1
if [ ! -f "${HOME}/.ssh/authorized_keys" ]; then
echo -e "${INFO} '${HOME}/.ssh/authorized_keys'が見つかりません..."
echo -e "${INFO} ${HOME}/.ssh/authorized_keysを作成しています..."
mkdir -p ${HOME}/.ssh/
touch ${HOME}/.ssh/authorized_keys
if [ ! -f "${HOME}/.ssh/authorized_keys" ]; then
echo -e "${ERROR} SSHキーのファイル作成に失敗しました。"
else
echo -e "${INFO} キーファイルが作成されました、続行します..."
fi
fi
if [ "${OVERWRITE}" == 1 ]; then
echo -e "${INFO} SSHキーを上書きしています..."
echo -e "${PUB_KEY}\n" >${HOME}/.ssh/authorized_keys
else
echo -e "${INFO} SSHキーを追加しています..."
echo -e "\n${PUB_KEY}\n" >>${HOME}/.ssh/authorized_keys
fi
chmod 700 ${HOME}/.ssh/
chmod 600 ${HOME}/.ssh/authorized_keys
[[ $(grep "${PUB_KEY}" "${HOME}/.ssh/authorized_keys") ]] &&
echo -e "${INFO} SSHキーが正常にインストールされました!" || {
echo -e "${ERROR} SSHキーのインストールに失敗しました!"
exit 1
}
}
change_port() {
echo -e "${INFO} SSHポートを${SSH_PORT}に変更しています..."
if [ $(uname -o) == Android ]; then
[[ -z $(grep "Port " "$PREFIX/etc/ssh/sshd_config") ]] &&
echo -e "${INFO} ポート${SSH_PORT}" >>$PREFIX/etc/ssh/sshd_config ||
sed -i "s@.*\(Port \).*@\1${SSH_PORT}@" $PREFIX/etc/ssh/sshd_config
[[ $(grep "Port " "$PREFIX/etc/ssh/sshd_config") ]] && {
echo -e "${INFO} SSHポートが正常に変更されました!"
RESTART_SSHD=2
} || {
RESTART_SSHD=0
echo -e "${ERROR} SSHポートの変更に失敗しました!"
exit 1
}
else
$SUDO sed -i "s@.*\(Port \).*@\1${SSH_PORT}@" /etc/ssh/sshd_config && {
echo -e "${INFO} SSHポートが正常に変更されました!"
RESTART_SSHD=1
} || {
RESTART_SSHD=0
echo -e "${ERROR} SSHポートの変更に失敗しました!"
exit 1
}
fi
}
disable_password() {
if [ $(uname -o) == Android ]; then
sed -i "s@.*\(PasswordAuthentication \).*@\1no@" $PREFIX/etc/ssh/sshd_config && {
RESTART_SSHD=2
echo -e "${INFO} SSHでのパスワードログインを無効にしました。"
} || {
RESTART_SSHD=0
echo -e "${ERROR} パスワードログインの無効化に失敗しました!"
exit 1
}
else
$SUDO sed -i "s@.*\(PasswordAuthentication \).*@\1no@" /etc/ssh/sshd_config && {
RESTART_SSHD=1
echo -e "${INFO} SSHでのパスワードログインを無効にしました。"
} || {
RESTART_SSHD=0
echo -e "${ERROR} パスワードログインの無効化に失敗しました!"
exit 1
}
fi
}
while getopts "og:u:f:p:d" OPT; do
case $OPT in
o)
OVERWRITE=1
;;
g)
KEY_ID=$OPTARG
get_github_key
install_key
;;
u)
KEY_URL=$OPTARG
get_url_key
install_key
;;
f)
KEY_PATH=$OPTARG
get_loacl_key
install_key
;;
p)
SSH_PORT=$OPTARG
change_port
;;
d)
disable_password
;;
?)
USAGE
exit 1
;;
:)
USAGE
exit 1
;;
*)
USAGE
exit 1
;;
esac
done
if [ "$RESTART_SSHD" = 1 ]; then
echo -e "${INFO} sshdを再起動しています..."
$SUDO systemctl restart sshd && echo -e "${INFO} 完了。"
elif [ "$RESTART_SSHD" = 2 ]; then
echo -e "${INFO} sshdまたはTermuxアプリを再起動して効果を得てください。"
fi
出典#
https://www.nodeseek.com/jump?to=https%3A%2F%2Fp3terx.com%2Farchives%2Fssh-key-installer.html