| 522 |
|
|
| 523 |
if (ssh_options_set(session, SSH_OPTIONS_FD, &sock) < 0 || |
if (ssh_options_set(session, SSH_OPTIONS_FD, &sock) < 0 || |
| 524 |
ssh_options_set(session, SSH_OPTIONS_PROCESS_CONFIG, &ssh_process_config) < 0 || |
ssh_options_set(session, SSH_OPTIONS_PROCESS_CONFIG, &ssh_process_config) < 0 || |
| 525 |
|
ssh_options_set(session, SSH_OPTIONS_KNOWNHOSTS, SSH_KNOWN_HOSTS_FILE) < 0 || |
| 526 |
ssh_options_set(session, SSH_OPTIONS_HOST, bbsnet_conf[n].ip) < 0 || |
ssh_options_set(session, SSH_OPTIONS_HOST, bbsnet_conf[n].ip) < 0 || |
| 527 |
ssh_options_set(session, SSH_OPTIONS_USER, remote_user) < 0 || |
ssh_options_set(session, SSH_OPTIONS_USER, remote_user) < 0 || |
| 528 |
ssh_options_set(session, SSH_OPTIONS_HOSTKEYS, "+ssh-rsa") < 0 || |
ssh_options_set(session, SSH_OPTIONS_HOSTKEYS, "+ssh-rsa") < 0 || |
| 532 |
goto cleanup; |
goto cleanup; |
| 533 |
} |
} |
| 534 |
|
|
| 535 |
|
ssh_set_blocking(session, 0); |
| 536 |
|
|
| 537 |
while (!SYS_server_exit) |
while (!SYS_server_exit) |
| 538 |
{ |
{ |
| 539 |
ret = ssh_connect(session); |
ret = ssh_connect(session); |
| 548 |
} |
} |
| 549 |
} |
} |
| 550 |
|
|
| 551 |
ssh_set_blocking(session, 0); |
ret = ssh_session_is_known_server(session); |
| 552 |
|
switch (ret) |
| 553 |
|
{ |
| 554 |
|
case SSH_KNOWN_HOSTS_NOT_FOUND: |
| 555 |
|
case SSH_KNOWN_HOSTS_UNKNOWN: |
| 556 |
|
if (ssh_session_update_known_hosts(session) != SSH_OK) |
| 557 |
|
{ |
| 558 |
|
log_error("ssh_session_update_known_hosts(%s) error\n", bbsnet_conf[n].ip); |
| 559 |
|
prints("\033[1;31m无法添加服务器证书\033[m"); |
| 560 |
|
press_any_key(); |
| 561 |
|
goto cleanup; |
| 562 |
|
} |
| 563 |
|
log_common("SSH key of (%s) is added into %s\n", bbsnet_conf[n].ip, SSH_KNOWN_HOSTS_FILE); |
| 564 |
|
case SSH_KNOWN_HOSTS_OK: |
| 565 |
|
break; |
| 566 |
|
case SSH_KNOWN_HOSTS_CHANGED: |
| 567 |
|
case SSH_KNOWN_HOSTS_OTHER: |
| 568 |
|
log_error("ssh_session_is_known_server(%s) error: %d\n", bbsnet_conf[n].ip, ret); |
| 569 |
|
prints("\033[1;31m服务器证书已变更\033[m"); |
| 570 |
|
press_any_key(); |
| 571 |
|
goto cleanup; |
| 572 |
|
} |
| 573 |
|
|
| 574 |
for (int i = 0; !SYS_server_exit;) |
for (int i = 0; !SYS_server_exit;) |
| 575 |
{ |
{ |