제가 만들고 있는 일부 Linux VM에서 사용자 계정 생성 속도를 높이고 싶고 새 사용자 ~/.ssh/authorized_keys
나 ~/.ssh/authorized_keys2
파일을 작성하는 프로세스를 단순화할 수 있는지 궁금합니다.
내 수동 프로세스는 대략 다음과 같습니다(새 사용자로 로그인).
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
touch ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
echo '... me@machine' >> ~/.ssh/authorized_keys
touch
Bash 명령, 표준 GNU 명령 또는 Ubuntu에 쉽게 설치되는 프로그램을 사용하여 , chmod
및 를 echo
단일 명령으로 압축하는 방법이 있습니까 ?
부분적으로 가상 머신에서 sudo 기능을 사용하여 초기 사용자로 실행할 수 있는 셸 스크립트를 만들 수 있도록 이를 하나의 명령으로 단순화하고 싶습니다.
그것은 다음과 같습니다:
sudo su - me -c 'ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa'
echo '... me@machine' | sudo su - me -c 'xyz 0600 ~/.ssh/authorized_keys'
xyz
한 번에 파일을 생성하고, 권한을 설정하고, 작성하는 가상 명령은 어디에 있습니까?
답변1
알아채다
touch ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
echo '... me@machine' >> ~/.ssh/authorized_keys
어떠한 혜택도 제공하지 않습니다:
echo '... me@machine' >> ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
권한 확인열리는파일을 읽거나 쓸 때가 아닙니다.
chmod
따라서 콘텐츠를 추가하기 전이나 후에 하든 상관없습니다. 이를 수행할 때까지 다른 사람들은 계속해서 파일을 열 수 있지만 chmod
파일을 읽으려면 귀하가 콘텐츠를 추가할 때까지 기다려야 합니다.
여기에서는 파일이 처음부터 올바른 권한을 갖고 있는지 확인하려고 합니다.
sudo -Hu user sh -c '
umask 077 && printf "%s\n" "$1" >> ~/.ssh/authorized_keys
' sh "$key user@host"
-H
홈 디렉토리를 강제 $HOME
로 설정하여 user
( sudo
기본적으로 그렇게 하지 않도록 구성된 시스템에서도) 해당 디렉토리에 대한 sh
확장을 생성합니다 ~
. ~user
대신 사용할 수도 있습니다 ~
.
답변2
아래 코드 줄을 사용하여 새로 생성된 계정을 기존 키로 채웁니다. 기존 파일의 내용을 추가하도록 쉽게 조정할 수 있습니다.
sudo -Hu user /bin/sh -ec 'umask 077; mkdir -p -- ~/.ssh; cat > ~/.ssh/authorized_keys' <<EOF
id-rsa AAAA...AA [email protected]
EOF
답변3
당신은 조사할 수도 있습니다ssh-copy-id
인용하다: ssh-keygen 및 ssh-copy-id를 사용하여 SSH 비밀번호 없는 로그인을 수행하는 3단계
답변4
실제로 install
여기에서 도움말을 찾을 수 있습니다.
install -m 600 /dev/null ~/.ssh/authorized_keys
touch
및 의 조합을 대체합니다 chmod
.
그런 다음
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
Authorized_keys에 키를 추가합니다. 필요한 곳에 추가하십시오 sudo
.