diff --git a/src/client.c b/src/client.c
index d9d43fe..0cc5e4e 100644
--- a/src/client.c
+++ b/src/client.c
@@ -149,10 +149,12 @@ static int callback_receive_banner(const void *data, size_t len, void *user) {
  */
 int ssh_send_banner(ssh_session session, int server) {
   const char *banner = NULL;
+  const char *terminator = NULL;
   char buffer[128] = {0};
   int err=SSH_ERROR;
 
-  banner = session->version == 1 ? CLIENTBANNER1 : CLIENTBANNER2;
+  banner = session->opts.ssh1 && !session->opts.ssh2 ? CLIENTBANNER1 : CLIENTBANNER2;
+  terminator = session->opts.ssh1 ? "\n" : "\r\n";
 
   if (server) {
     if(session->opts.custombanner == NULL){
@@ -167,13 +169,13 @@ int ssh_send_banner(ssh_session session, int server) {
     if (session->serverbanner == NULL) {
       goto end;
     }
-    snprintf(buffer, 128, "%s\n", session->serverbanner);
+    snprintf(buffer, 128, "%s%s", session->serverbanner, terminator);
   } else {
     session->clientbanner = strdup(banner);
     if (session->clientbanner == NULL) {
       goto end;
     }
-    snprintf(buffer, 128, "%s\n", session->clientbanner);
+    snprintf(buffer, 128, "%s%s", session->clientbanner, terminator);
   }
 
   if (ssh_socket_write(session->socket, buffer, strlen(buffer)) == SSH_ERROR) {
