Extra Form
PHP PHP 7.2
CMS Rhymix 1.x

rsync 명령어로 A호스팅에 있는 자료를 오라클 클라우드(B)로 옮기려고 합니다.

 

A로 ssh 들어가서 명령어를 썼는데 permission denied(public key) 에러가 뜹니다.

 

어떻게 해결해야할까요?

 

b의 환경은 우분트18에 엔진엑스입니다.

  • profile

    rsync를 시도하기 전에 일단 A에서 B로 로그인할 수 있는지부터 확실하게 체크해 두셔야 합니다.

    계정명이 다르거나, 개인키/공개키 파일 퍼미션이 맞지 않거나, 다양한 이유가 있을 수 있어요.

  • profile ?
    A는 putty 로그인할때 아이디 , 비밀번호 입력이고
    B는 putty 로그인할때 아이디 , ppk 파일입력이라서 그런걸까요?
  • ? profile
    A에서 B로 직접 로그인할 때는 putty도 아니죠... 환경이 전혀 다르고 ppk도 안 통해요.
  • profile ?
    네 더 공부해보겠습니다. 감사합니다.
  • ?
    A에서 ssh 키를 만들고 public 키를 오라클 클라우드 서버에 넣거나 혹은
    오라클 클라우드 서버의 sshd 를 패스워드 인증이 가능끔 설정해서 해보세요.
  • profile

    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  

     

  • profile ?

    오라클 클라우드에 .ssh 디렉토리와 authorized_key 파일이 없는데 새로 만들면 될까요?

     

    +) 아 찾았습니다. /home/ubuntu/에 있었네요.

  • profile ?
    시도했는데
    Unexpected remote arg: 가 뜹니다.

    rsync /test ubuntu@서버아이피: /home/

    으로 했는데 어디서 실수가 있을까요?
  • ? ?
    rsync -av /test ubuntu@서버아이피:/home/

    서버아이피:/경로 띄어쓰기 없이 붙여서 하세요.
  • ? ?
    감사합니다. 육아와 병행하면서 하느라 저녁때나 다시 시도해봐야하지만..ㅠㅠ
    잘 참고해서 해보겠습니다.
  • ? profile

    경로 조심하시라고 다른 질문글에서 말씀드렸는데요... 다행히(?) 아직 시도해보실 기회가 없으셨을 테니

    우선, 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 등 사이트 메인에 있는 파일 몇 개만 복사하고 그냥 끝날 겁니다. 폴더는 건드리지도 않죠...

  • profile ?

    조금 더 자세히 풀어서 질문드립니다.
    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/ 로 보내면 되는걸까요?

     

  • ? ?
    감사합니다 띄어쓰기 없이 붙여서 하니 잘 됩니다..^^
  • ? profile
    맨 앞에 슬래시를 붙이면 절대경로가 되므로 전체 경로를 다 써야 합니다.
    뒤에만 슬래시를 붙여서 test/ 라고 한다면 현재 폴더 아래의 test 폴더를 보내는 것입니다.
    B서버의 /var/www/html 경로에 ubuntu 유저가 쓰기 권한이 있다면 가능하겠네요.
  • profile ?
    네 되는것 같습니다. 테스중이긴합니다. 다만 속도가 너무 느려서
    제 인터넷 회선 문제일지, 호스팅사의 속도 문제일지 알아보고 있습니다. 감사합니다..^^