rsync 명령어로 A호스팅에 있는 자료를 오라클 클라우드(B)로 옮기려고 합니다.
A로 ssh 들어가서 명령어를 썼는데 permission denied(public key) 에러가 뜹니다.
어떻게 해결해야할까요?
b의 환경은 우분트18에 엔진엑스입니다.
PHP | PHP 7.2 |
---|---|
CMS | Rhymix 1.x |
rsync 명령어로 A호스팅에 있는 자료를 오라클 클라우드(B)로 옮기려고 합니다.
A로 ssh 들어가서 명령어를 썼는데 permission denied(public key) 에러가 뜹니다.
어떻게 해결해야할까요?
b의 환경은 우분트18에 엔진엑스입니다.
A 호스팅 에서 ssh-keygen -t rsa -b 4096 를 통해서 키를 생성 합니다.
만약 이미 키가 생성되었다면 이 과정은 생략 해도 됩니다
생성되어있다면 키는 ~/.ssh 에 있습니다
cd ~/.ssh
ls -al
없다면 위의 명령어로 키를 생성 해주세요
키가 있거나 생성하였다면 공개키를 오라클 클라우드 계정에 넣어주세요
A 호스팅에서
cd ~/.ssh
cat id_rsa.pub
ssh-rsa xxxxxxxxxxxxxx
<== 위와 같이 나오는 키를 그대로 긁어서(drag) 해서 복사 하세요
그리고 오라클 클라우드 에서 authorized_keys 파일안에 위에서 복사한 공개키를 넣어주세요
cd ~/.ssh
vi authorized_keys
입력이 완료 되었다면 A호스팅에서 오라클 클라우드로 접속을 시도 합니다.
우분투를 사용하시면 기본 계정은 ubuntu 입니다.
ssh ubuntu@오라클클라우드IP
ssh 접속이 가능하다면 sftp 나 rsync 를 이용해서 파일을 전송하시면 됩니다.
참고로 디렉토리와 파일의 아래의 퍼미션을 가지고 잇으면 됩니다.
.ssh 디렉토리는 700
authorized_keys 파일은 600
오라클 클라우드에 .ssh 디렉토리와 authorized_key 파일이 없는데 새로 만들면 될까요?
+) 아 찾았습니다. /home/ubuntu/에 있었네요.
경로 조심하시라고 다른 질문글에서 말씀드렸는데요... 다행히(?) 아직 시도해보실 기회가 없으셨을 테니
우선, A서버 쪽에 사이트가 올라가 있는 경로가 /test는 아닐 겁니다. 최소한 /test/www 정도는 되겠지요. 정확한 경로는 A서버에서 index.php가 있는 폴더에 들어가서 pwd 명령으로 확인할 수 있습니다. 그리고 뒤에 슬/래/시/가/ 있어야 합니다. 슬래시 빼먹으면 엉뚱한 곳에 복사될 수 있습니다.
복사 대상 경로는 절대로 /home/이 될 수 없습니다. ubuntu 계정으로 로그인하고 있으니까 아무리 짧게 써도 /home/ubuntu/로 시작하는 뭔가가 되어야지, 그것보다 짧으면 자신의 홈디렉토리 바깥으로 나가니까 권한 에러가 납니다. 그런데 아까 /home/ubuntu/.ssh/ 폴더 안에 뭔가 설정하셨지요? 이거 잘못 건드리면 로그인이 안 되는 대참사가 일어날 수도 있습니다. 따라서 .ssh 폴더를 건드리지 않도록 /home/ubuntu/ 아래에 별도의 서브폴더를 만들어서 작업하는 것이 안전하겠습니다. 원본 쪽이 www라면 대상 서버에서도 똑같이 해놓는 것이 좋겠지요? 그렇다면 /home/ubuntu/www/ 입니다.
그리고 저렇게 아무 옵션도 없이 rsync 명령에 경로만 넣어서 실행하시면 index.php 등 사이트 메인에 있는 파일 몇 개만 복사하고 그냥 끝날 겁니다. 폴더는 건드리지도 않죠...
조금 더 자세히 풀어서 질문드립니다.
A호스팅 사이트의 경우 ssh 로그인을 하면 /home/panic89 로 연결됩니다.
저는 이곳에서 /home/panic89/test 폴더를 시범삼아 보내려고 합니다.
처음 로그인을 하면 경로가 이미 /home/panic89 이기때문에 여기에서 rysnc test를 주면 바로 test를 보낼 수 있을 거라 생각했습니다.
B 클라우드의 경우 ssh 로그인을 하면 /home/ubuntu 로 연결됩니다.
그런데 이곳에 보내고 싶지 않고 /var/www/html/test 로 보내고 싶은거거든요.
A호스팅에서, /home/panic89/ 경로에서
rsync -av /home/panic89/test/ ubuntu@서버아이피:/var/www/html/test/ 로 보내면 되는걸까요?
rsync를 시도하기 전에 일단 A에서 B로 로그인할 수 있는지부터 확실하게 체크해 두셔야 합니다.
계정명이 다르거나, 개인키/공개키 파일 퍼미션이 맞지 않거나, 다양한 이유가 있을 수 있어요.