.pem ファイルの作成方法 - プロセス全体

.pem ファイルの作成方法 - プロセス全体

サーバーに接続するための.pemファイルを作成したいと思います。

ssh-keygenを使用できることを知っていますが、特定のユーザーにそれを使用したいすべてのプロセスを実行できるスクリプトが必要です。私の必要性はサーバーXでスクリプトを一度実行することですので、Xサーバーに接続しようとするたびに、自分のコンピューターにある.pemファイルを使用してXサーバーに接続できます。

答え1

私はこれを別の方法で行うことをお勧めします。

リモートコンピュータに秘密鍵を保存する必要はありません。

  1. ローカルコンピュータでキーペアを生成します。 ssh-keygen -f .ssh/somekey -t rsa -b 4096

  2. その後、リモートコンピュータにコピーします。 ssh-copy-id -i .ssh/somekey user@hostname

  3. 次にローカルを調整します.ssh/config

$ cat << BLURB >> .ssh/config 
Host shorthand
    HostName server.com
    User serveruser
    IdentityFile ~/.ssh/somekey
BLURB

次の3つの手順をスクリプトに簡単に含めることができますgenandcopykey.sh

#!/bin/bash - 
#         USAGE: ./genandcopykey.sh [email protected] [email protected] ...
#
#   DESCRIPTION: creates an ssh-keypair, copies pubkey to remotehost
#                and updates .ssh/config to use it

set -o nounset   # exit on unset variables.
set -o errexit   # exit on any error.
unalias -a       # avoid rm being aliased to rm -rf and similar issues
LANG=C           # avoid locale issues

for item in $@; do
    remoteuser="${item%@*}" # everything in front of the first "@"
    remotehost="${item#*@}" # everything after

    ssh-keygen  -f "${HOME}/.ssh/${item}" -t rsa -b 4096
    ssh-copy-id -i "${HOME}/.ssh/${item}.pub" "$item"

printf '%s\n' "
Host $remotehost
    HostName $item
    User $remoteuser
    IdentityFile ${HOME}/.ssh/${item}" >> $HOME/.ssh/config
done

それでもスクリプトにオプションを追加し、機能を使用できます。これは単純な例に過ぎず、存在しないホストまたは.ssh

答え2

方法を見つけましたが、どうすればいいのか答えがなくて投稿するようになりました。

#! /bin/bash
    #Based on https://linuxaws.wordpress.com/2017/07/17/how-to-generate-pem-file-to-ssh-the-server-without-password-in-linux/
    user=$(echo "$USER")
    ssh-keygen << EOF
    $user
    EOF
    mv $user $user.pem
    sudo chmod    700   ~/.ssh
    touch  ~/.ssh/authorized_keys
    sudo chmod   600  ~/.ssh/authorized_keys
    cat $user.pub >> ~/.ssh/authorized_keys
    echo "Copy the $user.pem to your computer."

サーバーまたはコンピューターでこのスクリプトを実行した後、次のコマンドを使用して他のサーバー/コンピューターから接続できます。

ssh -i <pem_filename>.pem user@host

答え3

キーベースのsudoユーザーを作成するために、ec2インスタンス用の以下のスクリプトを作成しました。これを試してください。

注:次のスクリプトは、redhat、ubuntu、suse、kali、centos、fedora、amazon linux 1/2、debain ...などのすべてのLinuxオペレーティングシステムに適用されます。

#!/bin/bash
#author: bablish jaiswal
#purpos: a sudo pem based user creation
clear
#echo "Hi, I am a function to create a sudo user with pem file. Kindly share following information"
echo -e "\n\n\n"
printf "\e[6;33mHi, I am a function to create sudo user with pem file. Kindly share following information\e[0m";echo
read -p "user name:- " name #input your name
read -p "complete path for $name home directory:- " home #user home directory
sudo useradd  -m -d $home $name -s /bin/bash #create user by given input
sudo -u $name cat /dev/zero | sudo -u $name ssh-keygen  -q -N "" #generating pem 
sudo -u $name  mv $home/.ssh/id_rsa.pub $home/.ssh/authorized_keys #permission
sudo chmod 700 $home/.ssh #permission again
sudo chmod 600 $home/.ssh/authorized_keys #permission again and again
echo " "
#echo "-------Copy below pem file text---------"
printf "\e[6;33m-----------------------------Copy below text-------------------------\e[0m";echo
sudo cat $home/.ssh/id_rsa
echo " "
#echo "-------Copy above text---------"
#svalue=$(cat /etc/sudoers |grep -i root |grep -i all|tail -n1 |awk '{$1=""}1') 
svalue=$(cat /etc/sudoers |grep -i root |grep -i all|tail -n1 |awk '{print $2}') #sudo creation
echo "${name} ${svalue} NOPASSWD:ALL" >> /etc/sudoers && echo “Remark:- User $name is a sudo user” #sudo confirmation message

答え4

まず、次のコマンドを使用してサーバーにRSAキーペアを作成しますssh-keygen

ssh-keygen -b 4096

2つのシステム間の安全な接続を確立するには、4096ビットのキー長を使用することをお勧めします。

パスワードを入力してください。使用しない場合は、空にしてください。

公開鍵を次に追加します。authorized_keys

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

または、サーバーのテキストエディタを使用して手動で追加することもできます。

秘密鍵をサーバーにコピーする

cp .ssh/id_rsa /home/your_user/your_key.pem

次に、クライアントPCからサーバーからキーをダウンロードしてください。

scp [email protected]:/home/your_user/your_key.pem /home/your_user/Downloads/

次に、SSH接続をテストしてみてください。

ssh [email protected] -i '/home/your_user/Downloads/your_key.pem'

関連情報