2017.04.21 에 이글루스에 올렸던 글을 거의 그대로 옮겨왔다.
Kubuntu 를 난생 처음 쓰다보니, 이런 저런 부딪히는 문제들이 많다.
그나마 이젠 내공이 쌓여서, 헤쳐나갈 방법도 찾아낼 능력도 있단 건 위안거리라 할 수도 있겠다. 하긴, 그러니 KDE 를 써볼 용기를 냈겠지.
본론에 앞서 KDE 얘기를 잠시 해보자면, 이렇게 제대로 써보려고 한 건 이번이 처음이지만, 예전에도 몇 번 설치해본 적은 있었다. 한국에서 리눅스 배포판이 나오던 시절, 많은 업체들이 KDE 를 기반으로 배포판을 제작했었던 것 같다. 오래 전이라 기억은 가물 가물 하지만.. 한글과 컴퓨터에서 나온 배포판도 있었는데, 그것도 KDE 기반이었던 것 같다. 그 뒤로도 간간히 한국 업체가 만든 배포판이 나오는 듯 하긴 했으나, 요즘도 나오는 지는 모르겠다. 우분투를 약간 변형(표현이 좀 애매하긴 한데..)하여 내놓는 것들은 본 적이 있긴 한데, 그저 Tweak 정도에 그친 수준이었다고 생각된다. (설치해 본 적은 없어서 뭐라 말할 수 없긴 하네.)
한컴에서 배포판을 낼 당시는 지금처럼 리눅스 데스크탑이 쓸만한 환경이 아니었기에, 그저 설치 한번 정도 하고 잠깐 가지고 놀다가 지워버리곤 했었다. 설치를 해도 뭐 쓸 수 있는게 있었어야지..
쿠분투를 설치하고 며칠 째 적응 중. 큰 불편함은 없고, 오히려 편리함이 눈에 띈다. 특히나 랩탑에서 많이 쓰이는 터치패드를 손쉽게 설정할 수 있게 되어 있어서 아주 아주 아주 편하다. Gnome 계열에선 이런 기능이 기본 제공되지 않아서 그냥 안 쓰든가, 아니면 다소 복잡한 설정을 거쳐야만 하는데, KDE 는 이런 면이 돋보인다.
자.. 딴 소리는 그만.
ssh 를 사용하여 타 PC(서버)에 접속할 때, 개인키/공개키를 사용하면 단순한 Password 인증 방식보다 더 높은 인증을 할 수 있고, 더 나아가서 매번 PW 를 입력하지 않아도 되는 장점이 있다. 예전에는 이걸 잘 몰라서 새 시스템을 만들 때마다 개인키/공개키를 새로 생성했었는데, 예전 키를 그냥 쓸 수 있다는 사실, 그리고 한번 생성한 키는 여러 군데서(여러 기기: PC, 스마트폰 등등) 같이 사용할 수 있다는 걸 알게 되고선, 몇 년째 같은 키를 사용하고 있다.
이번에 쿠분투를 설치하고 나서도 같은 키를 사용해 서버에 접속하려 했다.
접속 자체는 잘 됐는데, 문제는 개인키에 부여된 PassPhrase 를 로그인시마다 계속 물어본다는데 있었다.
우분투 16.04 는 예전에 설치한 거라 기억이 나지 않지만, 우분투 16.10 부터 17.04까지는, ssh 를 공개키로 인증을 할 때, 최초에 PassPhrase 를 넣는 순간, 터미널에서가 아닌, GUI 창이 뜨면서 PassPhrase 를 물어오고, 이 암호를 저장할 수 있도록 체크박스를 제공하고 있다. 이것을 선택하면 이후에는 암호를 다시 물어오지 않는다. 이렇게 되는 것이, 어떤 배경으로 이렇게 작동하는 건 지는 모르겠다.
우분투 Gnome 계열에서 ssh 공개키 로그인을 최초로 시행했을 때는 다음과 같은 화면이 나오면서 Passphrase 를 묻게 된다.

여기서 ‘로그인 상태에서는 이 키의 잠금을 자동으로 해제합니다.’를 선택해주면, 이후엔 Passphrase 를 묻지 않는다.
그러나 Kubuntu 에선, 저런 화면이 나오지 않고, 그냥 터미널에서 암호를 묻는다. 아마 이 부분이 버그, 또는 미구현된 부분인 듯 하다.
제대로 되려면 다음과 같은 화면이 나와야 한다.

위 화면은 ksshaskpass 를 임의로 실행시켜서 얻은 것이다. 이렇게 강제로(?) 실행해서 암호를 넣고, ‘암호 기억하기’를 선택했다하더라도 재부팅한 뒤 ssh 접속을 하면 다시 또 암호를 넣어야 한다.
이 문제를 해결하기 위해.. 약 3시간여 삽질을 했다.
사실, 답은 거의 초반에 본 문서에 있었는데, 그게 답인 줄을 알 지를 못했다. 역시, ArchLinux 문서팀은 대단하다.
이게 가능하게 위해선 kde wallet 이 필요하다. 즉, 키를 kde wallet 에 넣어놓고, kde wallet 을 열어주면(최초에 로그인할 때 password 를 넣어줌으로 가능), 비밀번호가 필요할 때 kde wallet 이 알아서 입력해준다.
KDE Neon, Kubuntu
~/.config/autostart-scripts/ssh-add.sh
를 만들고, 반드시 실행권한(chmod +x ssh-add.sh)을 준다. 파일명은 꼭 저렇게 주지 않아도 된다.
파일을 열고, 다음을 추가한다.
#!/bin/sh ssh-add < /dev/null
특정 키를 지정해주고 싶다거나, 키가 여럿일 경우 이런 식으로 한다.
#!/bin/sh /usr/bin/ssh-add -q ~/.ssh/id_ed25519 ~/.ssh/rsa/id_rsa < /dev/null
재부팅하고 로그인 하면, 초기화면에서 위 그림과 같이 암호를 물어오는데, 입력해주고, ‘암호 기억하기’를 선택해준다.
이후엔 ssh 에서 다시 암호를 묻지 않는다.
Arch 문서에는 export SSH_ASKPASS="/usr/bin/ksshaskpass"
에 관한 내용도 있지만, Kubuntu 에선 이 작업은 필요없는 것 같다. 안 해줬음에도 잘 동작했다. 또, ksshaskpass 는 기본 설치 되어 있으므로, 다시 설치할 필요는 없다.
잘은 모르지만, Gnome 계열에서도 ‘로그인 상태에서는 이 키의 잠금을 자동으로 해제합니다.’를 선택했을 때 뭔가 저런 밑작업(?)이 추가되는게 아닌가.. 하고 의심만 해본다.
….
이렇게 또 한 고비를 넘겼는데, 과연, 다음엔 또 어떤 문제가 또 내게 삽질을 강요할런지.
2021.11.29 추가: Arch Linux
위는 우분투 기반 KDE 환경일 때고, Arch Linux 에선 좀 더 복잡한 설정을 해줘야 한다.
ssh-add 실행 스크립트
이건 KDE Neon 과 동일하게 만든다. 아치 문서에서는 스크립트 없이 그냥 .desktop 파일에 명령을 넣는 방식을 택했다. 어느 쪽이든 관계없다.
스크립트를 만들었다면, 예전에는 ~/.config/autostart-scripts
에 넣어놓고 시스템 시작 시에 자동실행되도록 했었는데, KDE Plasma 최근판(정확하게 어느 판부터인지는 모르겠고..)부터는 이 방식이 통하지 않는다.
여기에 넣어놓으면, ~/.config/autostart
에 .desktop 이 생성되고, 자동 실행된다.
아무튼, ~/.config/autostart-scripts
에 넣어도 안되는 건 아닌데.. 좀 더 명확하게 하려면, KDE 설정 프로그램을 통한다.
- KDE 설정 – 작업공간 – 시작 및 종료 – 로그인 스크립트
여기로 이동하여, 아래쪽에서 ‘로그인 스크립트 추가…’를 눌러 원하는 스크립트를 선택해준다.
환경변수 SSH_ASKPASS 설정
아울러, SSH_ASKPASS=ksshaskpass
라는 환경변수를 설정해줘야 한다. 다음 위치에 실행스크립트를 만들고, 실행가능하게 설정한다.
~/.config/plasma-workspace/env/askpass.sh #!/bin/sh export SSH_ASKPASS='/usr/bin/ksshaskpass'
이렇게 되면, KDE 설정 – 작업공간 – 시작 및 종료 – 로그인 스크립트 에 ‘시작 전 실행 스크립트’ 라는 항목이 생기는데, 이 항목은 KDE 설정에서 추가해줄 수는 없다. (지울 수는 있다.) 아마도 Shell 과 무관한 전역 환경변수 설정 영역인가보다.
모든 설정은 끝. 이제 더 이상 ssh passphrase 를 입력하지 않아도 된다.