Raspberry Pi 4/w Ubuntu 20.04 서버에서 cloud-init와 함께 ssh_import_id를 사용하는 방법은 무엇입니까?

Raspberry Pi 4/w Ubuntu 20.04 서버에서 cloud-init와 함께 ssh_import_id를 사용하는 방법은 무엇입니까?

저는 주로 학습 연습을 위해 Raspberry Pi 4에 새로 설치된 Ubuntu Server 20.04에 SSH 키를 자동으로 설정하려고 합니다. ssh_import_id옵션을 사용하려고 합니다 .클라우드 초기화내 GitHub 계정에서 SSH 공개 키를 가져와서 사용자 ~/.ssh/authorized_keys에게 추가합니다 pi.

ssh_import_id구성을 시작할 수 없는 것 같습니다 . ~/.ssh디렉토리는 사용자를 위해 만들어지지 않으며 piGitHub/ssh_import_id에서 키를 가져오는 것과 관련된 로그도 /var/logs/cloud-init.log없습니다 /var/log/cloud-init-output.log.

user-dataSD 카드 루트에 있는 내 현재 콘텐츠 :

  - 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-configusers:. 다음과 같이 작동해야 합니다.

#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_idUbuntu 및 Debian에서만 사용할 수 있지만 Ubuntu/Debian의 특징과 버전에 따라 ssh-import-idcloud-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.

관련 정보