рдЖрдзреА рд░рд╛рдд рдХреЗ рдХрдорд╛рдВрдбрд░ рдореЗрдВ SFTP рдХрд╛ рд╕рдорд░реНрдерди

рдпрд╣ рдЖрдзреА рд░рд╛рдд рдХреЗ рдХрдорд╛рдВрдбрд░ рдореЗрдВ SFTP рд╕рдорд░реНрдерди рдХреЗ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдПрдХ рдиреЛрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдореВрд▓ рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рд╣реИред

рдореИрдВ рдЖрдзреА рд░рд╛рдд рдХреЗ рдХрдорд╛рдВрдбрд░ рдореЗрдВ рдПрд╕рдПрдлрдЯреАрдкреА рд╕рдорд░реНрдерди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВ, рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдореИрдВрдиреЗ рд▓реЗрдЦрдХ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХреА - рдПрд╕рдПрдл-рдПрдЬреЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг sftp рд╕рдорд░реНрдерди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЬрд╢реНрди рдордирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЬрд▓реНрджреА рд╕реЗ рдмреИрдЧ рдлреЗрдВрдХрд╛ рдФрд░ рдЙрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред

рдФрд░ рдкрд╣рд▓реА рдирд┐рд░рд╛рд╢рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдзреА рд░рд╛рдд рдХреЛ рдПрдЬреЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд┐рдЫрд▓реА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:


рдПрдХ рдПрдЬреЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд▓реЗрдЦрдХ рд╕реЗ рдкреВрдЫрд╛ рдХрд┐ рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╛рдж рдореЗрдВ рдореБрдЭреЗ libssh2 рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рд╛рдЗрдЯ рдкрд░ ssh- рдПрдЬреЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рд╛ рдФрд░ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА

$ gcc -o agent_auth -Wall -I/usr/include -I. -lssh2 ssh2_agent.c ssh2_agent.c: In function 'main': ssh2_agent.c:99: warning: implicit declaration of function 'libssh2_session_handshake' /home/andrey/tmp/ccmczn2V.o: In function `main': ssh2_agent.c:(.text+0x1a8): undefined reference to `libssh2_session_handshake' collect2: ld returned 1 exit status 

рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдбреЗрдмрд┐рдпрди рдирд┐рдЪреЛрдбрд╝ рднрдВрдбрд╛рд░ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирдпрд╛ рд╣реИред рдореИрдВрдиреЗ libssh2 (1.3.0) рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред

 $ gcc -o agent_auth -Wall -I$PWD/libssh2/include -I. -L$PWD/libssh2/lib -lssh2 ssh2_agent.c 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЙрджрд╛рд╣рд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред

 $ LD_LIBRARY_PATH=$PWD/libssh2/lib ./agent-auth localhost andrey failed to connect! zsh: segmentation fault ./agent_auth localhost andrey 

рд╕реНрдЯреНрд░реЗрд╕ рдХреЗ рддрд╣рдд рд░рдирд┐рдВрдЧ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрдиреЗрдХреНрд╢рди 127.0.0.1 рдХреЗ рдмрдЬрд╛рдп 255.255.255.255 рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╕рдордп рд╕реЗрдЧрдлреЙрд▓реНрдЯред

 munmap(0xb7813000, 4096) = 0 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 connect(3, {sa_family=AF_INET, sin_port=htons(22), sin_addr=inet_addr("255.255.255.255")}, 16) = -1 ENETUNREACH (Network is unreachable) write(2, "failed to connect!\n", 19failed to connect! ) = 19 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ zsh: segmentation fault strace -f ./agent_auth localhost username 

рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛

 --- ssh2_agent.c.orig 2011-12-08 23:53:41.000000000 +0300 +++ ssh2_agent.c 2011-12-09 00:02:10.000000000 +0300 @@ -231,10 +231,12 @@ int main(int argc, char *argv[]) */ shutdown: - - libssh2_agent_disconnect(agent); - libssh2_agent_free(agent); + if (agent) { + libssh2_agent_disconnect(agent); + + libssh2_agent_free(agent); + } if(session) { 

рдлрд┐рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

 $ gcc -o agent_auth -Wall -I$PWD/libssh2/include -I. -L$PWD/libssh2/lib -lssh2 ssh2_agent.c $ LD_LIBRARY_PATH=$PWD/libssh2/lib ./agent_auth localhost andrey failed to connect! 

рдкрд╣рд▓реЗ рд╕реЗ рдмреЗрд╣рддрд░ - рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рд╕реЗрдЧрдлреЙрд▓реНрдЯ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдкрд░ рд╢рдкрде рд▓реЗрддрд╛ рд╣реИред рдореИрдВ рдлрд┐рд░ рд╕реЗ рдХреЛрдб рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВред Inet_addr () рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрд╕реНрдЯ рдХреЛ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрдиреЗрдХреНрдЯ () рдлрд╝рдВрдХреНрд╢рди рд╕рдордЭрддрд╛ рд╣реИред

  if (argc > 1) { hostaddr = inet_addr(argv[1]); } else { hostaddr = htonl(0x7F000001); } 

рдореИрдВ рдЖрджрдореА 3 inet_addr рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдФрд░ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрдкрдиреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдмрд┐рдВрдЧреЛ! рдореИрдВ рд╣реЛрд╕реНрдЯ рдХрд╛ рдирд╛рдо рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрддрд╛ рд╣реВрдВред 127.0.0.1 рдХреЗ рд╕рд╛рде рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреА рдЬрдЧрд╣, рдореБрдЭреЗ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИред

 $ LD_LIBRARY_PATH=$PWD/libssh2/lib ./agent_auth 127.0.0.1 andrey Fingerprint: FA F3 92 9E C4 AE 14 B4 FC BE ED 2A E8 33 0C 1E 34 09 9F B3 Authentication methods: publickey,password Authentication with username andrey and public key /home/andrey/.ssh/id_rsa failed! Authentication with username andrey and public key /home/andrey/.ssh/id_dsa succeeded! all done! 

рдЕрдм рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЖрдзреА рд░рд╛рдд рдХреЛ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП libssh2 (1.3.0) рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ

Source: https://habr.com/ru/post/In134307/


All Articles