.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

다음 세 단계를 스크립트에 쉽게 포함할 수 있습니다 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

두 시스템 간의 보안 연결을 설정하려면 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'

관련 정보