갤럭시S8에서는 설정 > 소리 및 진동 > 음량 버튼 기본 설정을 벨소리에서 미디어로 변경하면 된다.

하지만 아쉽게도 갤럭시S8 미만의 기기에서는 이런 옵션이 없다.

볼륨 버튼을 누르면 진동 모드가 풀리고 벨소리 모드가 되는 것이 기본이라 굉장히 짜증났는데, 이를 해결해줄 앱이 있다.

바로 SoundAssistant라는 앱이다.

아마 삼성폰에서만 작동하는 것 같다.

https://play.google.com/store/apps/details?id=com.samsung.android.soundassistant

여기에서 설치를 하고 앱을 실행하면 다음과 같은 화면이 뜨는데, 미디어 음량 제어를 활성화하면 된다.



이제 어느 앱에서든 볼륨키를 조정해도 미디어 음량 제어가 된다.

'Diary' 카테고리의 다른 글

2017학년도 봄학기 카이스트 정보보호대학원 최종 합격  (15) 2016.09.24
CVE 획득  (1) 2016.03.21
BoB 4기 최종합격!!!  (2) 2015.06.26
고음주역테스트(高音厨音域テスト) 가사  (0) 2015.05.14
엿같은 Active X  (0) 2015.04.12

passphare를 설정해두지 않은 private key로 ssh 접속하면 비밀번호 입력 없이 편하게 이용할 수 있습니다.

다만 ssh 명령어를 실행하는 서버에는 private key가 있어야 합니다. 따라서 서버를 설치하는 곳마다 private key를 copy해야하고 이는 굉장히 번거롭습니다.

또 하나의 시나리오를 가정해봅시다. 현재 사용중인 PC(A)에서 팀원들끼리 공용으로 사용하는 웹서버(B)에 ssh로 접속해서 개발을 하고, github(C)를 이용해 version control을 합니다.

그렇다면 B 서버에서 매번 git pull이나 git push를 할 때마다 ID/PW를 입력해줘야 합니다. 편하게 이용하는 방법 없을까요?


바로 ssh agent를 사용하면 됩니다. 이 경우 B와 C에 ssh 공개키를 저장해두고, A에서 B로 접속할 때 agent를 이용해 접속한다면 B에서 C로 접속할 때 인증이 자동으로 됩니다.

먼저 ssh key가 없는 분들을 위해 ssh key부터 생성해봅시다. command line에 다음 명령어를 입력합니다.

ssh-keygen -t rsa -b 4096 -C "ian0371@naver.com"

여기서 C 옵션은 Comment이므로 원하는 문구를 입력하면 됩니다. 나중에 key를 여러 개 관리하게 될 경우 comment를 달아두면 편합니다.

저장 경로 default는 ~/.ssh/id_rsa 입니다. 변경해도 변경하지 않아도 무방합니다. 글에서는 이 경로를 기준으로 설명드리겠습니다.

passphrase를 비워두면 ssh 접속시 비밀키의 passphrase를 입력하지 않아도 됩니다. passphrase를 입력하지 않으면 비밀키 파일이 암호화되지 않습니다. 따라서 저는 passphrase를 설정해두었는데, 대신 passphrase를 1회만 입력하면 ssh agent 프로세스가 종료될 때까지 (보통 컴퓨터 종료시까지) passphrase를 입력하지 않아도 됩니다. 모든 세팅 완료 후 글 마지막에 설명드리겠습니다.

이렇게 하면 비밀키인 ~/.ssh/id_rsa 하나와 공개키인 ~/.ssh/id_rsa.pub 하나 이렇게 총 2가지가 생성됩니다.

B서버의 ~/.ssh/authorized_keys 파일에 명령어를 입력해 내 공개키를 추가해줍니다. B서버에서 다음 명령어를 입력합니다.(아래 <id_rsa.pub> 부분에는 A에서 생성했던 id_rsa.pub의 내용물(cat ~/.ssh/id_rsa.pub)을 복사해서 붙여넣기합니다.)

echo "<id_rsa.pub>" >> ~/.ssh/authorized_keys

이렇게하면 이제 A서버에서 B서버로 접속할 때 다음 명령어를 이용해 접속할 수 있습니다.

ssh [id]@[B의 ip] -i ~/.ssh/id_rsa

마찬가지로 C서버에도 B서버와 같게 설정을 해줍니다. 만약 C가 github라면 https://github.com/settings/keys에서 New SSH Key를 누르고 id_rsa.pub내용을 복사-붙여넣기 해줍니다. (자세한 내용은 https://help.github.com/articles/connecting-to-github-with-ssh/에서 확인할 수 있습니다.)

만약 B서버에서 C서버로 접속하고자 하면 B에는 비밀키가 없기 때문에 공개키를 이용해 C로의 접속이 불가능할 것입니다. 따라서 ssh agent를 이용해야 하는데 이는 매우 간단합니다. 처음에 A에서 B로 접속할 때 -A 옵션만 추가해주면 됩니다.

ssh [id]@[B의 ip] -i ~/.ssh/id_rsa -A

이렇게 B서버로 접속한 뒤 C서버로 접속하고자 할 때는 그냥 ssh명령어만 사용해주면 됩니다.

ssh [id]@[C의 ip]

비밀키의 passphrase를 묻는 창이 뜰겁니다. passphrase가 없다면 바로 접속될 것입니다. B서버에서 github접속도 간단하게 테스트해볼 수 있습니다. 다음 명령어를 B서버에서 입력하면 됩니다.

ssh -T git@github.com

하지만 매번 password치는 번거로움은 여전히 해결되지 않았습니다. 따라서 password를 1회만 입력하는 방법을 소개합니다.


먼저 내 PC인 A가 Windows일 때입니다. 여러 ssh agent(xagent, pageant 등)이 있는데 저는 xshell을 주로 사용하기 때문에 xagent로 설명드리겠습니다.

파일 - 열기 - B 클릭 - 등록정보 - 연결 - SSH - 암호 처리에 Xagent(SSH 에이전트)를 사용함 체크


등록정보 창에서 연결 - 사용자 인증 - 방법 Public Key - 사용자 키 찾아보기 - 가져오기 에서 id_rsa 파일 선택


※ default 세션을 이렇게 바꿔두면 새로 세션을 만들때마다 이 작업을 안 해줘도 됩니다.


이렇게하면 xagent가 꺼지지 않는 이상 xagent가 처음 실행될 때만 passphrase를 입력해주면 됩니다. 아마 pageant도 비슷하게 세팅해주면 될 것 같습니다.


내 PC A가 ubuntu등 bash를 쓰는 환경일 때 설명해드리겠습니다. https://help.github.com/articles/working-with-ssh-key-passphrases/#auto-launching-ssh-agent-on-git-for-windows에 있는 script를 복사해서 ~/.bashrc 맨 밑이나 ~/.profile 맨 밑에 붙여넣어주면 됩니다.

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env


이렇게하면 bash를 처음 띄울 때 passphrase를 입력해주면 됩니다.


주의할 점이 있는데, 신뢰하지 못하는 서버에서 신뢰하지 못하는 사람이 root 권한을 가지고 있을 때 ssh agent를 사용할 경우, /tmp/에 생성되는 세션을 관리자가 hijacking할 수 있습니다. 따라서 신뢰하지 못하는 관리자의 서버에 접속할 경우에는 agent 기능을 사용 안 하시면 됩니다.

Ubuntu에서는 기본적으로 Desktop Sharing을 제공해 원격에서 Desktop을 조정할 수 있다.

panel에서 Desktop Sharing으로 검색하면 바로 나오는 것을 볼 수 있다.



Desktop Sharing을 선택하고 맞는 설정을 해주면 된다.

그런데 설정을 해두고 tigervnc의 vncviewer에서 접속하면 다음과 같은 메시지가 뜨는 것을 볼 수 있다.

아마 우분투 쪽에서 암호화쪽 구현을 잘못 한 것 같다. 이를 해결하려면 암호화를 풀어야 한다. 먼저 dconf-tools를 설치한다.

sudo apt-get install dconf-tools

이후 다음 명령어를 입력하거나 혹은 GUI로 encryption 기능을 해제한다. 둘 중에 하나만 선택해서 하면 된다. 먼저 명령어로 해제하려면

dconf write /org/gnome/desktop/remote-access/require-encryption false

를 입력하고, 혹은 GUI로 해제하려면 panel에서 dconf Editor > org > gnome > desktop > remote-access > require-encryption에 체크를 해제하면 된다.


하지만 이럴 경우 화면 전송이 암호화가 되질 않는다. 이를 ssh tunneling을 이용해 암호화된 채널을 만들어보자.

내 PC에서 ubuntu desktop을 접속한다고 할 때 내 PC와 ubuntu desktop에 모두 ssh가 설치되어 있어야 한다.

PC가 윈도우일 경우 git bash나 MinGW, xShell 등을 사용하면 된다. git bash 등을 열어 다음 명령어를 PC에서 실행한다.

ssh [ID]@[IP주소] -L 9000:localhost:5900

이 의미는 내 PC의 9000번 포트를 ubuntu 기준에서의 localhost(즉 ubuntu 자신)의 5900 포트로 tunnel을 생성하라는 의미이다.

그런 다음 vnc에서 localhost:9000으로 접속하면 잘 되는 것을 확인할 수 있다.


추가로 xShell에서 ssh tunneling을 하는 방법은 다음과 같다. 새 세션을 하나 만들고, 등록 정보에서 연결 > SSH > 터널링 화면에서 추가를 누른 뒤 포워딩 규칙에 다음과 같이 입력한다.

그런 다음 접속한 뒤 보기 > 터널링 창 > 포워딩 규칙을 보면 localhost:9000 -> localhost:5900으로 터널이 생성된 것을 알 수 있다.


+ Recent posts