
저는 주로 학습 연습을 위해 Raspberry Pi 4에 새로 설치된 Ubuntu Server 20.04에 SSH 키를 자동으로 설정하려고 합니다. ssh_import_id
옵션을 사용하려고 합니다 .클라우드 초기화내 GitHub 계정에서 SSH 공개 키를 가져와서 사용자 ~/.ssh/authorized_keys
에게 추가합니다 pi
.
ssh_import_id
구성을 시작할 수 없는 것 같습니다 . ~/.ssh
디렉토리는 사용자를 위해 만들어지지 않으며 pi
GitHub/ssh_import_id에서 키를 가져오는 것과 관련된 로그도 /var/logs/cloud-init.log
없습니다 /var/log/cloud-init-output.log
.
user-data
SD 카드 루트에 있는 내 현재 콘텐츠 :
- name: pi
groups: [sudo]
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_import_id: # import public key from github
- gh:my_cool_github_account
lock_passwd: true # disable password login
를 사용하여 공개 키를 수동으로 입력하면 모든 것이 잘 작동합니다 ssh_authorized_keys
. 이는 내 작업 흐름에 적합하지만 GitHub 설정이 멋져지길 바라고 있습니다.
내 이해는 cloud-init
확실히 약간 기본적이므로 뭔가를 놓쳤을 수 있습니다. 사용자/일반 비트/루트 SSH 키 및 지문을 다시 작성하므로 제대로 실행되는 것처럼 느껴지는 다음을 cloud-init clean
실행 하여 변경 사항을 트리거합니다 .cloud-init init
아마도 데이터 소스 도 사용하고 있는 것 같습니다 NoCloud
.
누구든지 내가 뭘 잘못하고 있는지 알아내도록 도와줄 수 있나요?
답변1
그것은 단지 사용자 데이터의 일부인가요? 그렇지 않은 경우 헤더 #cloud-config
와 users:
. 다음과 같이 작동해야 합니다.
#cloud-config
users:
- name: pi
groups: [sudo]
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_import_id:
- gh:torvalds
lock_passwd: true
방금 테스트하고 에서 키를 찾았습니다 /home/pi/.ssh/authorized_keys
. 가져오려는 github 사용자의 키가 https://github.com/settings/keys
?
/var/log/cloud-init.log
다음을 포함합니다:
2021-08-09 13:56:24,302 - helpers.py[DEBUG]: Running config-ssh-import-id using lock (<FileLock using file '/var/lib/cloud/instances/me/sem/config_ssh_import_id'>)
2021-08-09 13:56:24,302 - cc_ssh_import_id.py[DEBUG]: Importing SSH ids for user pi.
2021-08-09 13:56:24,302 - subp.py[DEBUG]: Running command ['sudo', '-Hu', 'pi', 'ssh-import-id', 'gh:torvalds'] with allowed return codes [0] (shell=False, capture=False)
답변2
cloud-init의 문서 모듈에 따르면 ssh_import_id
Ubuntu 및 Debian에서만 사용할 수 있지만 Ubuntu/Debian의 특징과 버전에 따라 ssh-import-id
cloud-init ssh_import_id
모듈이 실제로 키를 검색하기 위해 배후에서 사용하는 바이너리가 설치될 수도 있고 설치되지 않을 수도 있습니다. 당신의 배포판에.
예를 들어,https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.qcow2함께 제공되지 않았기 때문에 cloud-init가 Github에서 내 키를 가져오지 못했습니다. 내 경우 command not found
에는 /var/log/cloud-init-output.log
.
ssh-import-id
초기화된 시스템에 명령이 있는지 확인하십시오 . 해당 블록이 없으면 다음 블록에 다음 블록을 추가해 볼 수 있습니다 user-data
.
packages:
- ssh-import-id
답변3
하려고 노력하다:
users:
- name: pi
ssh_authorized_keys:
- ssh-rsa <your key here>
.ssh/authorized_keys
사용자 파일 에 키를 넣어야 합니다 pi
.