Mosh: the mobile shell

Related tags

CLI mosh
Overview

Build Status

Mosh: the mobile shell

Mosh is a remote terminal application that supports intermittent connectivity, allows roaming, and provides speculative local echo and line editing of user keystrokes.

It aims to support the typical interactive uses of SSH, plus:

  • Mosh keeps the session alive if the client goes to sleep and wakes up later, or temporarily loses its Internet connection.

  • Mosh allows the client and server to "roam" and change IP addresses, while keeping the connection alive. Unlike SSH, Mosh can be used while switching between Wi-Fi networks or from Wi-Fi to cellular data to wired Ethernet.

  • The Mosh client runs a predictive model of the server's behavior in the background and tries to guess intelligently how each keystroke will affect the screen state. When it is confident in its predictions, it will show them to the user while waiting for confirmation from the server. Most typing and uses of the left- and right-arrow keys can be echoed immediately.

    As a result, Mosh is usable on high-latency links, e.g. on a cellular data connection or spotty Wi-Fi. In distinction from previous attempts at local echo modes in other protocols, Mosh works properly with full-screen applications such as emacs, vi, alpine, and irssi, and automatically recovers from occasional prediction errors within an RTT. On high-latency links, Mosh underlines its predictions while they are outstanding and removes the underline when they are confirmed by the server.

Mosh does not support X forwarding or the non-interactive uses of SSH, including port forwarding.

Other features

  • Mosh adjusts its frame rate so as not to fill up network queues on slow links, so "Control-C" always works within an RTT to halt a runaway process.

  • Mosh warns the user when it has not heard from the server in a while.

  • Mosh supports lossy links that lose a significant fraction of their packets.

  • Mosh handles some Unicode edge cases better than SSH and existing terminal emulators by themselves, but requires a UTF-8 environment to run.

  • Mosh leverages SSH to set up the connection and authenticate users. Mosh does not contain any privileged (root) code.

Getting Mosh

The Mosh web site has information about packages for many operating systems, as well as instructions for building from source.

Note that mosh-client receives an AES session key as an environment variable. If you are porting Mosh to a new operating system, please make sure that a running process's environment variables are not readable by other users. We have confirmed that this is the case on GNU/Linux, OS X, and FreeBSD.

Usage

The mosh-client binary must exist on the user's machine, and the mosh-server binary on the remote host.

The user runs:

$ mosh [[email protected]]host

If the mosh-client or mosh-server binaries live outside the user's $PATH, mosh accepts the arguments --client=PATH and --server=PATH to select alternate locations. More options are documented in the mosh(1) manual page.

There are more examples and a FAQ on the Mosh web site.

How it works

The mosh program will SSH to [email protected] to establish the connection. SSH may prompt the user for a password or use public-key authentication to log in.

From this point, mosh runs the mosh-server process (as the user) on the server machine. The server process listens on a high UDP port and sends its port number and an AES-128 secret key back to the client over SSH. The SSH connection is then shut down and the terminal session begins over UDP.

If the client changes IP addresses, the server will begin sending to the client on the new IP address within a few seconds.

To function, Mosh requires UDP datagrams to be passed between client and server. By default, mosh uses a port number between 60000 and 61000, but the user can select a particular port with the -p option. Please note that the -p option has no effect on the port used by SSH.

Advice to distributors

A note on compiler flags: Mosh is security-sensitive code. When making automated builds for a binary package, we recommend passing the option --enable-compile-warnings=error to ./configure. On GNU/Linux with g++ or clang++, the package should compile cleanly with -Werror. Please report a bug if it doesn't.

Where available, Mosh builds with a variety of binary hardening flags such as -fstack-protector-all, -D_FORTIFY_SOURCE=2, etc. These provide proactive security against the possibility of a memory corruption bug in Mosh or one of the libraries it uses. For a full list of flags, search for HARDEN in configure.ac. The configure script detects which flags are supported by your compiler, and enables them automatically. To disable this detection, pass --disable-hardening to ./configure. Please report a bug if you have trouble with the default settings; we would like as many users as possible to be running a configuration as secure as possible.

Mosh ships with a default optimization setting of -O2. Some distributors have asked about changing this to -Os (which causes a compiler to prefer space optimizations to time optimizations). We have benchmarked with the included src/examples/benchmark program to test this. The results are that -O2 is 40% faster than -Os with g++ 4.6 on GNU/Linux, and 16% faster than -Os with clang++ 3.1 on Mac OS X. In both cases, -Os did produce a smaller binary (by up to 40%, saving almost 200 kilobytes on disk). While Mosh is not especially CPU intensive and mostly sits idle when the user is not typing, we think the results suggest that -O2 (the default) is preferable.

Our Debian and Fedora packaging presents Mosh as a single package. Mosh has a Perl dependency that is only required for client use. For some platforms, it may make sense to have separate mosh-server and mosh-client packages to allow mosh-server usage without Perl.

More info

Issues
  • Doesn't pass along mouse actions

    Doesn't pass along mouse actions

    When using an xterm-compatible terminal, one can use the mouse in some applications (e.g. tmux, vim). Mosh does not pass this along, but ssh does. This is a blocking issue for me, and I won't be switching from pure ssh to mosh until/if this is resolved.

    feature 
    opened by kergoth 84
  • Scrollback and alternate screen (was: Use alternate screen on smcup/rmcup )

    Scrollback and alternate screen (was: Use alternate screen on smcup/rmcup )

    When the remote application uses smcup to enter the alternate screen, the client should put the real terminal in alternate screen mode too, so that for example the mouse wheel lets you scroll in less and emacs and barnowl.

    feature 
    opened by andersk 81
  • Cannot connect (MacOSX client, Debian server)

    Cannot connect (MacOSX client, Debian server)

    Hi,

    I just wanted to say that this is a long awaited feature... a client that is robust to roaming around, as many of us do.

    I compiled the recent version from git for the server (a Debian Squeeze/sid machine) and am using the MacPorts version of mosh.

    When running It I get the following error:

    mosh [email protected]

    mosh requires a UTF-8 locale. Connection to server4 closed. /opt/local/bin/mosh: Did not find mosh server startup message.

    I fiddled around with my client's /etc/ssh_config but this didn't help. What can I do to resolve this and start using mosh?

    support 
    opened by ErikDeBruijn 72
  • reattach to detached mosh sessions

    reattach to detached mosh sessions

    Sometimes after a crash/reboot of my client machine, I see "Mosh: You have a detached Mosh session on this server (mosh [12726])." when I log back into the server. It would be nice to be able to reattach to that session.

    feature 
    opened by ghazel 61
  • ctrl-^ escape not ideal

    ctrl-^ escape not ideal

    This is issue 187 reformulated as a feature request. There are two problems with the current escape mechanism:

    • ctrl-^ is a commonly-used command in vi.
    • Sending a literal ctrl-^ is awkward.

    I would suggest using the same escape mechanism as ssh (newline tilde). It has the following good properties:

    • It is already familiar to users.
    • The begin-escape sequence is two characters, thus rarely entered unintentionally.
    • The first character (newline) of the escape gets sent immediately, so the user rarely sees his input swallowed. (The necessity of sending a newline when you want the escape sequence is practically never an issue.)
    • In the rare case that you enter the begin-escape sequence unintentionally, you just hint tilde again to send a literal tilde. If the user is confused because his tilde didn't work, he is likely to do that anyway.

    If you are wedded to preserving ctrl-^ . as the quit sequence, I would suggest at least making the behavior a little saner:

    • ctrl-^ ctrl-^ should send a literal ctrl-^ (not two).
    • ctrl-^ should send literal ctrl-^ , except for a fixed set of s. They may as well follow ssh, and you may as well reserve them now even if they are not implemented.

    Making the escape key configurable may be considered.

    feature 
    opened by pimlott 50
  • /usr/local/bin/mosh: Did not find mosh server startup message.

    /usr/local/bin/mosh: Did not find mosh server startup message.

    I installed via Homebrew, but I can't seem to log into any servers.

    $ mosh [email protected] (user and host are different) [email protected]'s password: (i entered the correct password) bash: mosh-server: command not found Connection to host closed /usr/local/bin/mosh: Did not find mosh server startup message.

    Any help would be appreciated. Thanks! :-)

    opened by kacy 47
  • mosh-client crashed in update_assumed_receiver_state upon device wake

    mosh-client crashed in update_assumed_receiver_state upon device wake

    I had four mosh-client processes running when I opened my laptop this morning after leaving home, and one of them crashed immediately while the others kept working like they usually do. The laptop didn't have a usable network link when I opened it. The other side is a Ubuntu 16.04.5 LTS with whatever mosh-version is included there.

    Here's the complete crash log.

    Process: mosh-client [9500] Path: /usr/local/Cellar/mosh/1.3.2_4/bin/mosh-client Identifier: mosh-client Version: 0 Code Type: X86-64 (Native) Parent Process: ??? [9499] Responsible: mosh-client [9500] User ID: 501

    Date/Time: 2018-11-07 07:31:06.209 +0100 OS Version: Mac OS X 10.14.1 (18B75) Report Version: 12 Bridge OS Version: 3.1 (16P1065) Anonymous UUID: 25720A49-0E1F-1028-0A95-AF0A739D5C54

    Sleep/Wake UUID: FE4D84F4-85CB-4CE9-AF35-A9DBFFD34E85

    Time Awake Since Boot: 450000 seconds Time Since Wake: 1 seconds

    System Integrity Protection: enabled

    Crashed Thread: 0 Dispatch queue: com.apple.main-thread

    Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY

    Application Specific Information: dyld2 mode Assertion failed: (now >= i->timestamp), function update_assumed_receiver_state, file ./../network/transportsender-impl.h, line 283.

    Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x00007fff7bb09b86 __pthread_kill + 10 1 libsystem_pthread.dylib 0x00007fff7bbbfc50 pthread_kill + 285 2 libsystem_c.dylib 0x00007fff7ba731c9 abort + 127 3 libsystem_c.dylib 0x00007fff7ba3b868 __assert_rtn + 320 4 mosh-client 0x000000010ea7a9b0 Network::TransportSenderNetwork::UserStream::update_assumed_receiver_state() + 168 5 mosh-client 0x000000010ea7a6f7 Network::TransportSenderNetwork::UserStream::calculate_timers() + 43 6 mosh-client 0x000000010ea7ab85 Network::TransportSenderNetwork::UserStream::tick() + 35 7 mosh-client 0x000000010ea77224 STMClient::main() + 2556 8 mosh-client 0x000000010ea72735 main + 437 9 libdyld.dylib 0x00007fff7b9cb08d start + 1

    Thread 0 crashed with X86 Thread State (64-bit): rax: 0x0000000000000000 rbx: 0x0000000113d405c0 rcx: 0x00007ffee118ebf8 rdx: 0x0000000000000000 rdi: 0x0000000000000307 rsi: 0x0000000000000006 rbp: 0x00007ffee118ec30 rsp: 0x00007ffee118ebf8 r8: 0x000000000000011b r9: 0xcccccccccccccccd r10: 0x0000000000000000 r11: 0x0000000000000206 r12: 0x0000000000000307 r13: 0x000000010f11d000 r14: 0x0000000000000006 r15: 0x000000000000002d rip: 0x00007fff7bb09b86 rfl: 0x0000000000000206 cr2: 0x00007fffae7d2188

    Logical CPU: 0 Error Code: 0x02000148 Trap Number: 133

    Binary Images: 0x10ea70000 - 0x10eaabff7 +mosh-client (0) <27B8877C-023F-35BA-A874-0FE227D1A2E8> /usr/local/Cellar/mosh/1.3.2_4/bin/mosh-client 0x10ead4000 - 0x10ebfefeb +libprotobuf.17.dylib (0) <681916E6-DECE-3CD8-979F-E47FEF2BFEBA> /usr/local/opt/protobuf/lib/libprotobuf.17.dylib 0x113c8a000 - 0x113d086a7 dyld (635.2) <1780094A-8FE2-3EAA-B4A3-C4CF14BC5196> /usr/lib/dyld 0x7fff78e40000 - 0x7fff78e41ffb libSystem.B.dylib (1252.200.5) /usr/lib/libSystem.B.dylib 0x7fff7909a000 - 0x7fff790f1ff7 libc++.1.dylib (400.9.4) /usr/lib/libc++.1.dylib 0x7fff790f2000 - 0x7fff79107fff libc++abi.dylib (400.17) /usr/lib/libc++abi.dylib 0x7fff7a32a000 - 0x7fff7a35aff7 libncurses.5.4.dylib (53.200.3) /usr/lib/libncurses.5.4.dylib 0x7fff7a8e6000 - 0x7fff7b06cfe7 libobjc.A.dylib (750.1) <9CE27EC3-3A12-35D1-8F2F-3550B9668259> /usr/lib/libobjc.A.dylib 0x7fff7b7c9000 - 0x7fff7b7dbffb libz.1.dylib (70.200.4) <99A3D725-8388-38B4-B66C-5E9006E6F072> /usr/lib/libz.1.dylib 0x7fff7b84c000 - 0x7fff7b850ff3 libcache.dylib (81) /usr/lib/system/libcache.dylib 0x7fff7b851000 - 0x7fff7b85bff3 libcommonCrypto.dylib (60118.220.1) <1099E427-6E81-3059-87AF-6F5FD81CA998> /usr/lib/system/libcommonCrypto.dylib 0x7fff7b85c000 - 0x7fff7b863fff libcompiler_rt.dylib (63.4) /usr/lib/system/libcompiler_rt.dylib 0x7fff7b864000 - 0x7fff7b86dff3 libcopyfile.dylib (146.200.3) <4BCDADBF-79F5-3829-B47D-64DA0D44BCBF> /usr/lib/system/libcopyfile.dylib 0x7fff7b86e000 - 0x7fff7b8f2fdf libcorecrypto.dylib (602.220.6) /usr/lib/system/libcorecrypto.dylib 0x7fff7b979000 - 0x7fff7b9b3ff7 libdispatch.dylib (1008.220.2) /usr/lib/system/libdispatch.dylib 0x7fff7b9b4000 - 0x7fff7b9e3fff libdyld.dylib (635.2) <1B79A5CE-125F-301F-A441-C1869573AED0> /usr/lib/system/libdyld.dylib 0x7fff7b9e4000 - 0x7fff7b9e4ffb libkeymgr.dylib (30) /usr/lib/system/libkeymgr.dylib 0x7fff7b9f2000 - 0x7fff7b9f2ff7 liblaunch.dylib (1336.220.5) <95EB6EAF-2DC5-344F-BADB-CA4E35E4E503> /usr/lib/system/liblaunch.dylib 0x7fff7b9f3000 - 0x7fff7b9f8fff libmacho.dylib (921) /usr/lib/system/libmacho.dylib 0x7fff7b9f9000 - 0x7fff7b9fbffb libquarantine.dylib (86.220.1) <6AE5AEEC-A9FD-3CF8-92DD-12B5AFBE12DE> /usr/lib/system/libquarantine.dylib 0x7fff7b9fc000 - 0x7fff7b9fdff3 libremovefile.dylib (45.200.2) /usr/lib/system/libremovefile.dylib 0x7fff7b9fe000 - 0x7fff7ba15ff3 libsystem_asl.dylib (356.200.4) /usr/lib/system/libsystem_asl.dylib 0x7fff7ba16000 - 0x7fff7ba16fff libsystem_blocks.dylib (73) <26419398-C30C-30F1-B656-A92AFA9560F6> /usr/lib/system/libsystem_blocks.dylib 0x7fff7ba17000 - 0x7fff7ba9ffff libsystem_c.dylib (1272.200.26) <3DEEE96E-6DF6-35AD-8654-D69AC26B907B> /usr/lib/system/libsystem_c.dylib 0x7fff7baa0000 - 0x7fff7baa3ff7 libsystem_configuration.dylib (963.200.27) <02CC3996-B34E-333C-8806-AE2699D34424> /usr/lib/system/libsystem_configuration.dylib 0x7fff7baa4000 - 0x7fff7baa7ff7 libsystem_coreservices.dylib (66) <254B6849-2C8F-302C-8616-B8324A11AB30> /usr/lib/system/libsystem_coreservices.dylib 0x7fff7baa8000 - 0x7fff7baaeffb libsystem_darwin.dylib (1272.200.26) <974E9EF7-DE72-34B7-B056-0A81C10DF8EB> /usr/lib/system/libsystem_darwin.dylib 0x7fff7baaf000 - 0x7fff7bab5ff7 libsystem_dnssd.dylib (878.200.35) /usr/lib/system/libsystem_dnssd.dylib 0x7fff7bab6000 - 0x7fff7bb02ff3 libsystem_info.dylib (517.200.9) <0707C387-D7DE-372E-8FF1-3DE5C91932D6> /usr/lib/system/libsystem_info.dylib 0x7fff7bb03000 - 0x7fff7bb2aff7 libsystem_kernel.dylib (4903.221.2) <0E882078-7330-3B49-AA5D-3CDB5645A4E5> /usr/lib/system/libsystem_kernel.dylib 0x7fff7bb2b000 - 0x7fff7bb76ff7 libsystem_m.dylib (3158.200.7) <43D1796B-954F-37D6-B1AC-9D80DF0655A2> /usr/lib/system/libsystem_m.dylib 0x7fff7bb77000 - 0x7fff7bb9bff7 libsystem_malloc.dylib (166.220.1) <3B196122-4E0D-3E3F-AA3E-5115B976DE26> /usr/lib/system/libsystem_malloc.dylib 0x7fff7bb9c000 - 0x7fff7bba7ff3 libsystem_networkextension.dylib (767.220.1) /usr/lib/system/libsystem_networkextension.dylib 0x7fff7bba8000 - 0x7fff7bbaffff libsystem_notify.dylib (172.200.21) /usr/lib/system/libsystem_notify.dylib 0x7fff7bbb0000 - 0x7fff7bbb9fef libsystem_platform.dylib (177.200.16) /usr/lib/system/libsystem_platform.dylib 0x7fff7bbba000 - 0x7fff7bbc4fff libsystem_pthread.dylib (330.220.2) <4958273C-4273-3501-8137-E44249E10D9C> /usr/lib/system/libsystem_pthread.dylib 0x7fff7bbc5000 - 0x7fff7bbc8ff7 libsystem_sandbox.dylib (851.220.9) <4D6433A8-C703-3ED9-82EB-B9E481A0FD2F> /usr/lib/system/libsystem_sandbox.dylib 0x7fff7bbc9000 - 0x7fff7bbcbff3 libsystem_secinit.dylib (30.220.1) <6C681113-8C48-3256-BEF6-0C3723DEB926> /usr/lib/system/libsystem_secinit.dylib 0x7fff7bbcc000 - 0x7fff7bbd3ff7 libsystem_symptoms.dylib (820.227.2) <3147D594-F41F-35FD-BF0B-6B8B66A407DE> /usr/lib/system/libsystem_symptoms.dylib 0x7fff7bbd4000 - 0x7fff7bbe9ff7 libsystem_trace.dylib (906.220.1) /usr/lib/system/libsystem_trace.dylib 0x7fff7bbeb000 - 0x7fff7bbf0ffb libunwind.dylib (35.4) <41222EF6-2233-3CF4-947A-15D48CB8C030> /usr/lib/system/libunwind.dylib 0x7fff7bbf1000 - 0x7fff7bc21fff libxpc.dylib (1336.220.5) /usr/lib/system/libxpc.dylib

    External Modification Summary: Calls made by other processes targeting this process: task_for_pid: 106 thread_create: 0 thread_set_state: 0 Calls made by this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by all processes on this machine: task_for_pid: 452177 thread_create: 0 thread_set_state: 0

    VM Region Summary: ReadOnly portion of Libraries: Total=230.4M resident=0K(0%) swapped_out_or_unallocated=230.4M(100%) Writable regions: Total=120.3M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=120.3M(100%)

                                VIRTUAL   REGION 
    

    REGION TYPE SIZE COUNT (non-coalesced) =========== ======= ======= Kernel Alloc Once 8K 2 MALLOC 112.1M 11 MALLOC guard page 16K 5 STACK GUARD 56.0M 2 Stack 8192K 2 VM_ALLOCATE 4K 2 __DATA 2320K 44 __LINKEDIT 217.0M 5 __TEXT 13.4M 43 shared memory 12K 4 =========== ======= ======= TOTAL 408.8M 110

    Model: MacBookPro15,1, BootROM 220.220.102.0.0 (iBridge: 16.16.1065.0.0,0), 6 processors, Intel Core i9, 2,9 GHz, 32 GB, SMC Graphics: Intel UHD Graphics 630, Intel UHD Graphics 630, Built-In Graphics: Radeon Pro 560X, Radeon Pro 560X, PCIe Memory Module: BANK 0/ChannelA-DIMM0, 16 GB, DDR4, 2400 MHz, Micron, 16ATS2G64HZ-2G6B1 16ATS2G64HZ-2G6B1 Memory Module: BANK 2/ChannelB-DIMM0, 16 GB, DDR4, 2400 MHz, Micron, 16ATS2G64HZ-2G6B1 16ATS2G64HZ-2G6B1 AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x7BF), wl0: Sep 18 2018 16:24:57 version 9.130.86.7.32.6.21 FWID 01-83a3fe91 Bluetooth: Version 6.0.9f2, 3 services, 27 devices, 1 incoming serial ports Network Service: Wi-Fi, AirPort, en0 Network Service: VPN SDAG, PPP (L2TP) USB Device: USB 3.1 Bus USB Device: iBridge Bus USB Device: iBridge DFR brightness USB Device: iBridge Display USB Device: Apple Internal Keyboard / Trackpad USB Device: Headset USB Device: iBridge ALS USB Device: iBridge FaceTime HD Camera (Built-in) USB Device: iBridge Thunderbolt Bus: MacBook Pro, Apple Inc., 34.6 Thunderbolt Bus: MacBook Pro, Apple Inc., 34.6

    opened by maiksd 45
  • High CPU Usage on FreeBSD 9/amd64

    High CPU Usage on FreeBSD 9/amd64

    Installed via ports, mosh 1.1.3 exhibited low (under 1%) cpu usage of both the client and the server, however upon updating to mosh 1.2.2 cpu usage skyrocketed to a point where typing commands and viewing the output of say 'ls' was noticeably delayed, top reports cpu usage as 25% or so for both the client and server (on a core2 duo) and as high as 5% usage when idle.

    This is most noticeable on lower-spec machines like Intel Atoms, but it was still quite noticeable on a Core2 Duo when you were looking for it.

    Unfortunately I haven't tested any versions in-between 1.2.2 and 1.1.3 so I'm not sure where exactly it occurred. To compare, running "while true ; do ; ls ; done" in the same directory over ssh instead of mosh, sshd sits on around 7% cpu and you can't notice it updating where mosh peaks to 25%+ doing just a single ls. Directory in question has ~1000 files in it and colours are enabled for certain filetypes in case this has anything to do with it (ansi colour code processing mabe?).

    bug FreeBSD 
    opened by nvx 45
  •   Performance improvements for Terminal::Framebuffer and Terminal::Display

    Performance improvements for Terminal::Framebuffer and Terminal::Display

    This replaces pull request #527. This pull request has had some extraneous stuff weeded out, some pushed to other branches, bugs fixed, and (most important) a bunch of time spent in 'git merge -i' to its benefit. But the discussion on that pull request is still background for this one. I've fixed all the bugs I know of, the pull request is comprehensible now, and I think it's ready for Mosh.

    To summarize what this does:

    • It improves the containers in Terminal::Framebuffer. Terminal::Renditions and Terminal::Cells go on a diet (important when you have 30k of them), Cells use UTF-8 strings instead of vector<wchar_t> because std::string is faster everywhere I've tried it (even with different implementation strategies), and Rows are stored in vectors instead of deques (deques do neatly handle scrolling, but they are costly to index and construct/delete). It also reworks some methods to allow slightly more efficient generation of the diff string.
    • It rips apart^W^Wrefactors Terminal::Display::new_frame() and put_cell() to use a put_row() instead, and carefully optimizes the per-character loop inside to be much more efficient, and more logically organizes the state necessary for tracking the generation of the diff string. It also reworks character output to reduce the amount of characters generated significantly. Another motivating piece for this was to make both Framebuffers passed into new_frame() const references, instead of having to copy one. That in itself improved performance, but it lead to...
    • The last and largest improvement: making the Rows in Framebuffers shared, copy-on-write objects with the help of std::shared_ptr. I knew something like this was possible, but scratched my head for a while on how to do it cleanly. The change ends up being elegant and not very large, though-- thanks to past efforts to ensure const correctness everywhere else in Mosh. This greatly reduces the amount of copying mosh has to do to maintain multiple terminal states (except for one case-- where you cat a large file to your terminal and it's scrolling as fast as it can). This greatly improves Mosh's performance for actual use cases where not much of the display changes from frame to frame, like sitting idle or working in an editor.

    It also has various little algorithmic improvements and fixes for pet peeves, but those are fairly straightforward stuff.

    I think the shared/COW Rows change also has potential to help with other long-standing feature requests and issues in Mosh, such as versioned prediction and scrollback buffering. I haven't really explored that though.

    opened by cgull 44
  • Missing byte swapping functions

    Missing byte swapping functions

    When running ./configure I get an error:

    checking whether pipe2 is declared... no checking whether signalfd is declared... no checking whether htobe64 is declared... no checking whether OSSwapHostToBigInt64 is declared... no configure: error: Unable to find byte swapping functions

    I assume I'm missing some dependency, but I installed everything mentioned in the docs and I'm not totally sure what this one is.

    opened by agoder 40
  • Mosh 1.1.3 on OS X hangs on connect

    Mosh 1.1.3 on OS X hangs on connect

    OS X 10.7.3. Brew. Installed with "brew install mobile-shell"

    Connecting to an Ubuntu 10.04.4 LTS server results in a hang. Mosh prints one empty line after 'mosh foo.bar.com' and then nothing happens.

    I see the following processes running:

     | | | \-+= 48073 stefan -zsh
     | | |   \-+= 73668 stefan perl /usr/local/bin/mosh foo.bar.com
     | | |     \-+- 73671 stefan ssh -S none -o ProxyCommand='/usr/local/bin/mosh' --fake-proxy -- %h %
     | | |       \-+- 73672 stefan perl /usr/local/bin/mosh --fake-proxy -- foo.bar.com 22
     | | |         \--- 73674 stefan perl /usr/local/bin/mosh --fake-proxy -- foo.bar.com 22
    

    To make sure the server side is ok .. I can connect to this host from another Ubuntu machine.

    bug 
    opened by st3fan 37
  • Mosh attempt hangs without connecting

    Mosh attempt hangs without connecting

    Running on Fedora 31, mosh version 1.3.2, trying to connect to an RHEL8 server, same version of mosh. Similar to #833 but don't know if the underlying cause is the same. Essentially, after printing a few blank lines passed through from the child process that starts the server the parent process hangs on:

    close $pipe;

    at line 433 of /usr/bin/mosh. The child process successfully connects to the server and the parent successfully receives the MOSH IP and MOSH_CONNECT strings, but hangs when attempting to close the pipe to the child. Replacing -n with -f in @sshopts as suggested in another post fixes the problem.

    opened by SyamGadde 0
  • Unset stale SSH_TTY environment variable

    Unset stale SSH_TTY environment variable

    This variable would confuse devices that relied on it, such as the Clipetty extension for Emacs. See issue #1134.

    Tested on my end, I can now use Clipetty without needing to detect Mosh's existence and unset the variable manually. LMK if I did anything incorrectly.

    opened by ProducerMatt 0
  • Unable to display some UTF-8 sequences

    Unable to display some UTF-8 sequences

    I'm running mosh 1.3.2 on macOS Monterey installed using Homebrew. My terminal app of preference is iTerm2 and when I'm on it, everything works as expected. It also works as expected when I connect to other machines using plain ssh.

    I see the same behavior using mosh to connect to 3 different systems: FreeBSD 14-CURRENT, Ubuntu Server 20.04 and Ubuntu Server 22.04.

    I found issue #988 but it doesn't seem to be related to running an old glibc. One of those systems was released yesterday (ubuntu 22.04) and other one is a FreeBSD, which doesn't have glibc at all.

    I tried the problem reported on #988 and echo -e "\xf0\x9f\xA4\x94" produces on all systems listed above proper 🤔 emoji. But if I do echo -e "\xe2\xac\x86" I don't see expected ⬆, instead, it shows blank character.

    opened by rbgarga 2
  • zmodem file transfer doesn't work over mosh

    zmodem file transfer doesn't work over mosh

    sz/rz commands don't work through mosh and it would be nice if they could.

    consider the following use-case:

    $ screen      # on local laptop,
    

    press ^a then enter :zmodem catch to enable zmodem receive on the laptop.

    (screen)$ mosh host1
    
    host1$ ssh host2
    
    host2$ sz file.c
    

    i think support could be easier than other byte-oriented protocols, because:

    1. zmodem frames are very easy to recognise (in the terminal parser and keyboard input)
    2. zmodem frames are small (1k in traditional; 8k in lszrz a popular zmodem implementation), so they fit inside (fragmented) a udp packet and if packets are lost, zmodem can shrink the window
    3. zmodem retries automatically, so packet delivery isn't required
    opened by geocar 0
  • How to use mosh with git bash (windows) ?

    How to use mosh with git bash (windows) ?

    mosh.org: You will need to run Mosh from a full-featured terminal program such as mintty mintty: In Git-for-Windows, mintty is installed by default and invoked as "Git Bash".

    I found mosh here: https://github.com/mobile-shell/mosh/issues/293#issuecomment-885484861.

    I can use mosh to connect remote linux with windows cmd. But in git, it shows ERROR_INVALID_HANDLE.

    opened by Azureki 0
Releases(mosh-1.3.2)
  • mosh-1.3.2(Jul 22, 2017)

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA256
    
    Hello Mosh users and developers,
    
    mosh 1.3.2 has been released. This is primarily a maintenance
    release. (We skipped version 1.3.1 because of a glitch in Debian
    packaging. The previous release was mosh 1.3.0.)
    
    The source code is at: https://mosh.org/mosh-1.3.2.tar.gz
    (SHA-256: da600573dfa827d88ce114e0fed30210689381bbdcff543c931e4d6a2e851216)
    
    John Hood was the primary developer and release coordinator and
    deserves all our thanks.
    
    Compatibility: mosh 1.3.2 is backwards-compatible with mosh-clients
    back to 0.96 and mosh-servers back to 1.0.9.
    
    macOS binary package: We are releasing a macOS binary package.
    
    https://mosh.org/mosh-1.3.2.pkg is an x86_64 build for 10.10 and later.
    (SHA-256: 7b00838e04e954e19d6bd5a63ff9729084bd55e21d894994916b73e996a9c42f)
    
    However, we encourage macOS users to install via MacPorts or Homebrew,
    instead of using the binary package, in order to receive automatic upgrades.
    
    Bugs: Please let us know of any problems at the GitHub issue tracker,
    at https://github.com/mobile-shell/mosh/issues. The developers can
    also be found on IRC at <irc://irc.freenode.net/mosh>.
    
    The full change log for this release:
    
    ===
    
    * Platform support:
        * Explicitly enable binding to both IPv4 and IPv6 addresses.
          (Giel van Schijndel)
        * Restore perl 5.8.8 support for RHEL5.  (Alexander Chernyakhovsky)
        * Make tests detect UTF-8 locale with a helper executable.  (John Hood)
        * Don't print /etc/motd on IllumOS.  (John Hood)
        * Print {,/var}/run/motd.dynamic on Ubuntu.  (John Hood)
        * Fix build on Haiku. (Adrien Destugues)
        * Disable unicode-later-combining.test for tmux 2.4.
          This fixes build failures.  (John Hood)
    
      * Bug fixes:
        * In tests, explicitly set 80x24 tmux window, for newer versions
          of tmux.  (John Hood)
        * Work around JuiceSSH rendering bug.  (John Hood)
        * Do not move cursor for SCROLL UP and SCROLL DOWN--
          fixes an issue with tmux 2.4.  (John Hood)
    
    ===
    
    Best regards on behalf of the Mosh team,
    Keith Winstein
    -----BEGIN PGP SIGNATURE-----
    
    iQIcBAEBCAAGBQJZc8lFAAoJECC3KDr+JUxpFJIQAIKI3CwPyIgd6BNyoYdqIz9v
    AjapQEvYERErkjM0R8qNDGajJc5i1n6uHs/QJs+O0BflbTDchXueTG6cLodqhu7v
    i+rMpoYXasuE3DirlvR5R10AHo5WOTv3hRI6xeZW5pi7FcHXfc8UcyVT7AeBcxrj
    epk2F5AAYVnXt60XyakXDyq1SR6XprspX06VSOZeiqn13qIgnVVVA0SPsAHJ32fo
    9Wm6vRJQAaUkdZ/8tIgXNp/NU/EPqSW0JMte3OvvA43CICTltfyAy/Btk4A8Ibbw
    iJ6okgxHFA/+Hnr0Y+HmRlqIQgArlxSfg3fMA6VaqOb1H5H7x8Wno2rpV/OY4Rf2
    86jw2TVVKxuWXvdzF1oXiTpLtbX985T/FWPZj+31jp438uiupMhrxDS7P1/El9ZF
    v8x+/syFwo+Ht4UjZdynCtQgw5MM2aUIltJIUXmGP1N/QHYS94VSNMjj15WbeIGJ
    OmhIahUtHyELNuWiTwV+I60pZdTGtilhVun6r6jxAwKufCnQ2sM6D+z1QJiO4qgZ
    tCZUkE3CRmSIDQRXO0MKBiuk8qcfpJX0f+0P1LH7Qm5s1j/5Jn48Atd9UaozDVpK
    +GO6AOySZ+2BNgSu3EC3hj6ezu7UnNqJ9/SUZ/1NsS+YT15YYWFexjggJ1t/0SlI
    hZuMTcTCXD5n8jn++dYr
    =fjFO
    -----END PGP SIGNATURE-----
    
    Source code(tar.gz)
    Source code(zip)
    mosh-1.3.2-osx-build-report.tbz(153.42 KB)
    mosh-1.3.2.pkg(505.19 KB)
    mosh-1.3.2.tar.gz(351.14 KB)
  • mosh-1.3.0(Mar 25, 2017)

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA256
    
    Hello Mosh users and developers,
    
    mosh 1.3.0 has been released. (This is a corrected release announcement
    that fixes a typo in the previous email.)
    
    The source code is at: https://mosh.org/mosh-1.3.0.tar.gz
    (SHA-256: 320e12f461e55d71566597976bd9440ba6c5265fa68fbf614c6f1c8401f93376)
    
    John Hood was the primary developer and release coordinator and
    deserves all our thanks.
    
    Change in version numbering: We have switched our version numbering to
    follow the semver.org recommendations. Mosh will increment the minor
    version number any time we add new functionality. (In our previous
    practice, this release would probably have been called "1.2.7".)
    
    Compatibility: mosh 1.3.0 is backwards-compatible with mosh-clients
    back to 0.96 and mosh-servers back to 1.0.9.
    
    macOS binary package: We are releasing a macOS binary package.
    
    https://mosh.org/mosh-1.3.0.pkg is an amd64 build for 10.10 and later.
    (SHA-256: a423fcb5aab7079e20b03cfa5e8623bb89391087dd5492d68947c89a39eee80c)
    
    However, we encourage macOS users to install via MacPorts or Homebrew,
    instead of using the binary package, in order to receive automatic upgrades.
    
    Bugs: Please let us know of any problems at the GitHub issue tracker,
    at https://github.com/mobile-shell/mosh/issues. The developers can
    also be found on IRC at <irc://irc.freenode.net/mosh>.
    
    The full change log for this release:
    
    ===
    
    * New features:
      * Change website URLs from http://mosh.mit.edu to https://mosh.org.
        (Keith Winstein)
      * Add --no-ssh-pty option for Dropbear compatibility and other issues.
      * Switch to semantic versioning, making this version 1.3.0 instead
        of 1.2.7.
    
    * Platform support:
      * Added nonce-incrementing test.  (Keith Winstein)
      * Add build-source-package.sh for Debian.  (Keith Winstein)
      * Fix CPPFLAGS handling possibly causing curses detection failure.
        (John Hood)
      * Add an Appveyor/Cygwin CI build.
      * Improve warning-flags detection for 'make distcheck'.  (John Hood)
      * Improve robustness of regression tests.  (John Hood)
      * Support OpenBSD pledge() sandboxing.  (John Hood)
      * Use backward-compatible name for AES in AppleCommonCrypto, fixing
        builds with older OS X SDKs.  (John Hood)
      * Detect clock_gettime() and CLOCK_MONOTONIC carefully, fixing
        OS X 10.12 + Xcode 7.3 builds.  (John Hood)
      * Support older versions of Perl, back to 5.10, fixing RHEL 5 builds.
        (Anders Kaseorg)
      * Add a Travis OS X CI and release build.  (John Hood)
      * Add --help and --version, enabling Automake's 'std-options' checks.
        (Anders Kaseorg)
      * Add a simple smoke test not requiring tmux, to help validate builds
        on older platforms including RHEL 5. (Anders Kaseorg)
      * Check for presence of clock_gettime() for OS X, where the symbol
        may not be resolved on older OS X versions.  (John Hood)
      * Fix a memory alignment issue in OCB with ARM/Neon. (Carlos Cabanero)
      * Mosh now runs correctly on Bash for Windows with Windows 10 Insider
        builds 15002 and higher. (No change in Mosh)
      * Other minor platform compatibility fixes for Mosh sources and tests.
        (John Hood)
    
    * Bug fixes:
      * Work around a pty buffering issue causing failed connections on
        FreeBSD 11, or with Dropbear.  (John Hood)
      * Restore '-p 0' option for OS-selected UDP port bindings.  (John Hood)
      * Shell hygiene fixes, including better quoting of pathnames.
        (Anders Kaseorg)
      * Fix typos in project docs.  (Jakub Wilk)
      * Fix excess newlines on mosh client startup/shutdown.  (John Hood)
      * Exit gracefully, closing session, on pty write or ioctl failure.
        (John Hood)
      * Fix two bugs that caused mosh-server to consume excessive CPU in
        certain circumstances.  (John Hood)
      * Fix bug that caused text copied from mosh-client to paste as long
        lines joined by spaces.  (John Hood)
      * Documentation improvements. (chenxiaoqino, Ashish Gupta)
      * Use getuid(), not geteuid(), for correct getpw* lookups.  (John Hood)
    
    ===
    
    Best regards on behalf of the Mosh team,
    Keith Winstein
    -----BEGIN PGP SIGNATURE-----
    
    iQIcBAEBCAAGBQJY2BwOAAoJECC3KDr+JUxpsV8P/3Wd7fEzxNpxXJN7QaeFpGrS
    70KtHzXuxXg50tn9E+UQVTkg4rXVh72q6vElsVWCmsWlpzquCDRCpEZeWySmQxjQ
    MnN2tzrMYZBOEaPTV2xeLKPgRTLcDSMpw/bJEdyDs33LSpFk05fZIQHZOtL/0REq
    NjHYuvzmcNGP7aydWmkQyu1Vtpjk4urORnwsYdQ5JLt21AcJsD+GpdjPdQfaEJIU
    ZZ/haXZ9bvJBUzS2h0ZvJSpwHsZ1dIK4RZR5sSrtOmiIK7oEgK1KsidOriRyNEhX
    ORhc+kQspuncDsGDNTUPtI8PrqvrnVNSq6nvi0I1JVGqfUbwxpK+2j7t8rDFkYx/
    y9s9VkcE+cvm0JaJOhnVVZQn8BK5ztDsUVYkHrg48l3DmMQDaEujaNzASAx8aJRW
    WRzUowM41R5GG1EQ1tXFLH2igI2VRF9uUyIAHwHInUMHbrQQC3I1SgKod9xwdOVv
    HghszMDFlh8A9+80zzf46vYpMcGuqZWyv+AMAbYP0XF9cDFTZOeOP/t84CddRVda
    A5jJl9gc57Z0hWdBOIDl02yMMCmn3hibDchz3jlJATTGMycIqRcIA3n/9HBtDoa0
    4NOzbJvZxtQxHnulGX53hD9fnr3pvvYxX5POkVaFtKB3wJpUbScTAV8BjivM+EYV
    yaQLE4qz9HGLDv9bU2FZ
    =DJjX
    -----END PGP SIGNATURE-----
    
    Source code(tar.gz)
    Source code(zip)
    mosh-1.3.0-osx-build-report.tbz(155.76 KB)
    mosh-1.3.0.pkg(509.19 KB)
    mosh-1.3.0.tar.gz(347.87 KB)
  • mosh-1.2.6(Aug 12, 2016)

    -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1

    Hello Mosh users and developers,

    mosh 1.2.6 has been released.

    The source code is at: https://mosh.org/mosh-1.2.6.tar.gz (SHA-256: 7e82b7fbfcc698c70f5843bb960dadb8e7bd7ac1d4d2151c9d979372ea850e85)

    John Hood was the release coordinator and deserves all of our thanks. Major new features, all due to John, include:

    • - huge performance improvements, especially on large terminals,
    • - the ability to set a timeout to end dormant sessions automatically, and
    • - support for crypto libraries other than OpenSSL (Nettle and Apple Common Crypto).

    On the developer side, we now have an end-to-end test suite and continuous-integration tests on every pull request. We also worked around a bad interaction with glibc 2.22 that caused mosh-server to crash on startup.

    Compatibility: mosh 1.2.6 is backwards-compatible with mosh-clients back to 0.96 and mosh-servers back to 1.0.9.

    macOS binary package: We are releasing a macOS binary package.

    https://mosh.org/mosh-1.2.6.pkg is an i386+amd64 build for 10.9 and later. (SHA-256: 5eb7797b0c3a5423da1c62f80f8e6268acd55b1b10a850e58fd7bb8f6bdb520d)

    However, we encourage macOS users to install via MacPorts or Homebrew, instead of using the binary package, in order to receive automatic upgrades.

    Bugs: Please let us know of any problems at the GitHub issue tracker, at https://github.com/mobile-shell/mosh/issues. The developers can also be found on IRC at irc://irc.freenode.net/mosh.

    Website moves: Please note that the Mosh repository has moved to https://github.com/mobile-shell/mosh (from https://github.com/keithw/mosh). The Mosh website has moved to https://mosh.org (from https://mosh.mit.edu).

    The full change log for this release:

        * New features:
                * Add Travis CI builds for Linux and Mac.  (Anders
                  Kaseorg, others)
                * Add a --local option to run without ssh.  (John Hood)
                * Mosh now returns exitstatus reflecting connection success.
                  (John Hood)
                * Add a end-to-end test suite and many tests.  (John Hood)
                * Implement timeouts and signals to help address
                  orphaned sessions.  (John Hood)
                * Major rework of Mosh's display
                  differencing/rendering code with much improved
                  performance for slow machines.  (John Hood)
                * Implement ANSI back/forward tab (CSI CBT, CSI CHT).
                  (John Hood)
                * Do not start user shell until network session starts.
                  (John Hood)
                * Add options for more flexible specification of IPv4/IPv6
                  hostname resolution.  (John Hood)
                * Improved bash completion.  (Steve Dignam, HIGUCHI Yuta)
                * Add options for different methods of resolving the
                  remote host address, allowing operation without
                  SshProxyCommand.  (John Hood)
    
        * Platform support:
                * Add configurable support for Apple Common Crypto and
                  Nettle, in place of OpenSSL.  Implement base64 locally.
                  (John Hood)
                * Workaround Cygwin select() bug.  (John Hood)
                * Updates to Debian packaging.  (Anders Kaseorg, Keith
                  Winstein)
                * Workaround a glibc-2.22 issue causing segfaults on
                  Debian Sid.  (John Hood with help from many others)
                * Prefer c++ to g++, for systems like FreeBSD where
                  g++ is not usable.  (John Hood)
                * Fixes for Illumos Hipster 20151003.  (John Hood)
                * Disable -Werror for protobuf code, to resolve a new
                  gcc6 warning.  (John Hood)
                * Link test for -fstack-protector-all on an embedded
                  platform.  (Baruch Siach)
                * Resolve issue with bswap64() on FreeBSD-CURRENT with
                  libc++-3.8.0.  (John Hood)
                * Fix issue with RECVTOS error message on client on FreeBSD.
                  (John Hood)
    
        * Bug fixes:
                * Remove an assertion causing aborts on Unicode
                  fallback found by fuzzing with afl.  (Keith
                  Winstein)
                * Fix a server hang with XON/XOFF on BSD systems.
                  (John Hood)
                * Fix a typeahead-prediction bug that caused display
                  corruption on urxvt.  (John Hood)
    

    Best regards on behalf of the Mosh team, Keith Winstein -----BEGIN PGP SIGNATURE----- Version: GnuPG v1

    iQIcBAEBAgAGBQJXrXMJAAoJECC3KDr+JUxp0TsP/0xLkHq3s1CP9CG68ymA5eb2 zNVnXJTlfwamgRoz39NmOp+9Ixgw4w1zXCKkg1vE0LhoZGXEbMhqxN6YDV2HSlWV y1mTneiSc7FK1t6w71NQNIAHhN+sCM0pdA+eCrCj098Lx9l8zQnRrBXPhYMxcNkT gGlQXOBe0e3to9EXLRINdRLhnsshkTRmeCnCs7LaH5mFzrkLn47gHSegdrCMj0uu NRuII0eMw4ldNgsxaLGUcZp/Pud5HOwqOV18mTCIGP2leMnlkW5l8ViY0G9xdCJ0 JK7w4HdqHqW/cjPTjH6gvne4ZjCe2qFMGs7m0hrPUDfNzH1vatuF1I4FtgopRMsK MaTO0SRMxA7lqJwfJxywXDR3HAew3fnEXMlHMbUCvisDN8ABy9qR1v9PPlgEDbMS x/aCURpTXN3ra+VpJfyRMq9NWd7EWS3LYZ0qbKxQHf+1yOLm7iQScRzS5zkOs8gi n3R5ZuEhDE6Ip5BAOVFv6zeS+uLhtQPlUGUKKHw4Aso0lxTUs9sLXbprcYeY6ogK xKS5IJMVV/5Z3Xn42CJohIM52kVhehbwAw0TAHLHJu1JZEc+S8yfwkd7/Tl4CRNj Et34O6QTBr2Z42t9wf/hlcPeoP2nLYmIRfTeYnnwXKdMEkgeEDVUbGkPjeZ+XmPg D1f9rZQC2XOhVUpx7zMn =OSK1 -----END PGP SIGNATURE-----

    Source code(tar.gz)
    Source code(zip)
    mosh-1.2.6.pkg(873.19 KB)
    mosh-1.2.6.tar.gz(339.04 KB)
  • mosh-1.2.5.95rc1(May 26, 2016)

    Hi all,

    We're happy to announce the upcoming release of Mosh 1.2.6, and are calling for testing on Mosh 1.2.5.95rc1. The release has picked up some minor new features in the year since the last release such as better IPv6 support and tools to handle orphaned sessions. However, it's also seen significant improvements in performance, testing, and portability.

    The Changelog for this release:

    • New features:
      • Add Travis CI builds for Linux and Mac. (Anders Kaseorg, others)
      • Add a --local option to run without ssh. (John Hood)
      • Mosh now returns exitstatus reflecting connection success. (John Hood)
      • Add a end-to-end test suite and many tests. (John Hood)
      • Implement timeouts and signals to help address orphaned sessions. (John Hood)
      • Major rework of Mosh's display differencing/rendering code with much improved performance for slow machines. (John Hood)
      • Implement ANSI back/forward tab (CSI CBT, CSI CHT). (John Hood)
      • Do not start user shell until network session starts. (John Hood)
      • Add options for more flexible specification of IPv4/IPv6 hostname resolution. (John Hood)
      • Improved bash completion. (Steve Dignam, HIGUCHI Yuta)
      • Add options for different methods of resolving the remote host address, allowing operation without SshProxyCommand. (John Hood)
    • Platform support:
      • Add configurable support for Apple Common Crypto and Nettle, in place of OpenSSL. Implement base64 locally. (John Hood)
      • Workaround Cygwin select() bug. (John Hood)
      • Updates to Debian packaging. (Anders Kaseorg, Keith Winstein)
      • Workaround a glibc-2.22 issue causing segfaults on Debian Sid. (John Hood with help from many others)
      • Prefer c++ to g++, for systems like FreeBSD where g++ is not usable. (John Hood)
      • Fixes for Illumos Hipster 20151003. (John Hood)
      • Disable -Werror for protobuf code, to resolve a new gcc6 warning. (John Hood)
      • Link test for -fstack-protector-all on an embedded platform. (Baruch Siach)
      • Resolve issue with bswap64() on FreeBSD-CURRENT with libc++-3.8.0. (John Hood)
      • Fix issue with RECVTOS error message on client on FreeBSD. (John Hood)
    • Bug fixes:
      • Remove an assertion causing aborts on Unicode fallback found by fuzzing with afl. (Keith Winstein)
      • Fix a server hang with XON/XOFF on BSD systems. (John Hood)
      • Fix a typeahead-prediction bug that caused display corruption on urxvt. (John Hood)

    Source code is available as https://github.com/mobile-shell/mosh/releases/download/mosh-1.2.5.95rc1/mosh-1.2.5.95rc1.tar.gz. The SHA256 sum for this file is a2697c41cfc8c92dc7a743dd101849a7a508c6986b24d6f44711d8533d18fcf5

    One standalone OS X package is available:

    • https://github.com/mobile-shell/mosh/releases/download/mosh-1.2.5.95rc1/mosh-1.2.5.95rc1.pkg is an i386/x86_64 build for OS X 10.9 and higher. The SHA256 sum for this file is 48a56d83d0ef655d38e0ea596fd9cac98c0dc433cb5356205d26748350d47e6c

    (If you are using a package system such as MacPorts or Homebrew, I recommend using that, though.)

    As always, Ubuntu PPA builds of the latest source are available at ppa:keithw/mosh.

    Packagers, please note that Mosh has some minor dependency changes: Perl is now required to be >= 5.14, but IO::Socket modules are no longer required. If anybody needs to package for older versions of Perl, talk to me and I'll probably bring something into the release. Also, if anyone needs an OS X package for 10.8 or lower, please contact me.

    Your testing is very unlikely to prove Mosh to be free of bugs, but your testing will help us make 1.2.6 a better release. Please report any issues you find on Github, and we can be found on IRC at irc://irc.freenode.net/mosh.

    Looking ahead, we expect Mosh 1.3 to be a feature release, bringing significant new functionality. SSH agent forwarding is high on the list.

    The Mosh team thanks you for your help.

    --John Hood

    Source code(tar.gz)
    Source code(zip)
    mosh-1.2.5.95rc1.pkg(873.19 KB)
    mosh-1.2.5.95rc1.tar.gz(328.02 KB)
  • mosh-1.2.5(Jul 24, 2015)

    -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256

    Hello Mosh users and developers,

    mosh 1.2.5 has been released.

    The source code is at:

    https://mosh.mit.edu/mosh-1.2.5.tar.gz

    SHA-256: 1af809e5d747c333a852fbf7acdbf4d354dc4bbc2839e3afe5cf798190074be3

    John Hood was the release coordinator for this release and deserves all of our thanks! New features include mouse support, a reconfigurable escape key, and basic support for IPv6. There has also been a focus on making this a stable, reliable release as a base for future features.

    The change log for this release:

    • New features: * Bind to a specific IP address with --bind-server. (Philipp Haselwarter) * MOSH_ESCAPE_KEY configures escape character. (Timo J. Rinne) * Support non-roaming IPv6. (Anders Kaseorg) * Implement XTerm mouse mode. (Barosl LEE, Andrew Chin, Louis Kruger) * Report Git revision along with version if available. (John Hood)
    • Platform support: * Add pselect() emulation. (Jérémie Courrèges-Anglas) * OpenBSD, OS X: Fix be64toh-related issues. (Jérémie Courrèges-Anglas) * ARM Neon: fix gcc4.8 compiling problem(Pasi Sjöholm) * NaCl: Conditionally rename main to mosh_main. (Richard Woodbury) * FreeBSD: Token pasting, forkpty(), ARM fixes. (John Hood) * AIX: Implement CTTY grabbing when TIOCSCTTY is missing (Anton Lundin) * OS X: Broaden build support to cover OS X 10.5 through 10.10. (John Hood) * Debian: Improve bash-completion install and functionality. (Suggested by Gabriel Filion, John Hood)
    • Bug fixes: * Automake/autoconf workarounds. (Anders Kaseorg) * mosh-server: Allow startup without PTY. (Keith Winstein) * network.cc: Properly close old fd on Socket assignment operator. (Thanks to Igor Bukanov) * mosh-server: Allow startup with zero-window-size PTY. (Igor Bukanov) * AddrInfo: Fix error message generation when node == NULL (Anders Kaseorg) * Timestamp: Prevent integer overflow on Darwin PPC 32-bit (Anders Kaseorg) * scripts/mosh: Fix hang when remote closes the connection (Anders Kaseorg) * Fix issues with parsing of 256-color SGR sequences. (John Hood) * Numerous code hygiene, Coverity, and Clang static analyzer fixes. (Anders Kaseorg, Geoffrey Thomas, John Hood)

    Compatibility: mosh 1.2.5 is backwards-compatible with mosh clients back to 0.96 and mosh servers back to 1.0.9.

    OS X binary packages: We are releasing two OS X binary packages:

    https://mosh.mit.edu/mosh-1.2.5.pkg is an i386+amd64 build for OS X 10.9 SHA-256: 8a590ba81edd6f706f2d0afe1cb882bd8ff8860e395b7c6ac7285306f4f12209

    https://mosh.mit.edu/mosh-1.2.5-leopard.pkg is an i386+ppc build for OS X 10.5 SHA-256: 5fd77ce1c2d4b24db79be8daff3140975e53f49c83b48ff57087483133a59155

    However, when possible, we encourage OS X users to install via MacPorts or Homebrew, instead of using the binary package, in order to receive automatic upgrades.

    Packagers, please note that Mosh has picked up some minor new dependencies: for example, Debian/Ubuntu packaging now uses bash-completion at build time, install requires a not-ancient dpkg version, and IO::Socket::IP is recommended for IPv6 support. All of these dependencies are optional.

    Bugs: Please let us know of any problems at the GitHub issue tracker, at https://github.com/keithw/mosh/issues. The developers can also be found on IRC at irc://irc.freenode.net/mosh.

    Best regards on behalf of the Mosh team, Keith Winstein

    -----BEGIN PGP SIGNATURE----- Version: GnuPG v1

    iQIcBAEBCAAGBQJVsLluAAoJECC3KDr+JUxpFfkQAIzJEXg+KT5cJvTG6urxQOce SXgDcK1K15uj8/eyYNa0VrXL7dBuWCHDpWsBpl8O8VVOdPuA4yTo7TKDk8IWi3Jh QjBUfv6XQ4RY8yK3lf9bnZlTiBAnQxP/hpG+I+y4C37thvTc3PVgq3oLYW8/CwaN x1DmSUvNipXAfhDk2CMn7DrxIRnVzt233Qhwyl+YlwUmxxLDDA+fG/Mp4J94aEt7 QWfwNii8zSwIMpZnzYD3nV2XkK1Dve1YNc7fD32URMpvlTboosQjQ7sLqbHVJQFS 53lePMU0UWfzGPsr28n4gQjH9/iac5Kyu6a2aQTAy9ErkQ1oQnwU9njtaTBdJRIJ hGLNg9aTtZCejCNaaoiCc7iKT8XPWZfNLMgdsEQzvQ/bdstLc2TwFgZql+uJpJWw B3lXU4LM1lUpO+0Qp1ixBq4XyAw6Wx9wGcF6oJtNAds0pnAqqq5ASFseN9/gY6Q2 r9BYWGHEOhrdCD6kQrsqT5tKCBLepUa0SlPTz2jsFNe7fwnLyc3pGIU02S+sf5Pf XcjgrcNedKCQpuaSNCIq5bwfUpetX+Kb+HwuuPvRRBwRjXgjAIcUlcKD5Lz9ED0G Eqybni+P2brdNGa2+ivTQITwgvY4vDRNZf+c5YLKA2KwOWKnoCo0Tnfv57mOSNqX 3RFXJyYBv9gKNfAxXYmg =uzIB -----END PGP SIGNATURE-----

    Source code(tar.gz)
    Source code(zip)
    mosh-1.2.5.tar.gz(301.61 KB)
  • mosh-1.2.4(Jun 10, 2013)

    Hello Mosh users and developers,

    mosh 1.2.4 has been released.

    The source code is at: http://mosh.mit.edu/mosh-1.2.4.tar.gz

    SHA-1: b1dffe8562d7b2f4956699849fbe5d18bfd7749e SHA-256: e74d0d323226046e402dd469a176075fc2013b69b0e67cea49762c957175df46

    Compared with Mosh 1.2.3, this maintenance release largely fixes bugs, improves robustness, and adds platform support. The changelog is:

    • New features:
      • Support port ranges with -p LOWPORT:HIGHPORT (Luke Mewburn)
      • Ctrl-^ Ctrl-Z suspends mosh client (Nikolai Zeldovich)
      • mm:ss display of lost-contact times (Kevin Ballard)
      • Show infobar with control chars when Ctrl-^ is typed
      • Put terminal in altscreen mode (Anders Kaseorg)
      • Tell automake/Debian pkg about our checks (Anders Kaseorg)
    • Platform support:
      • OS X: Script to build a universal package (Peter Iannucci)
      • FreeBSD: Fix build problems (Jimmy Olgeni)
      • AIX: port by Anton Lundin
      • Solaris with system curses (Anton Lundin)
      • Cygwin and others: eliminate use of IO::Pty (Anton Lundin)
    • Bug fixes:
      • Fix bug (introduced in 1.2.3) where server stays around if process quits while client is detached
      • Clean up spurious entries from detached sessions warning
      • Fix freeze when connectivity is one-directional for hours (reported by Axel Beckert)
      • Don't wipe title until a new one is set (sqweek)
      • Eliminate memory leaks and cppcheck warnings (Anders Kaseorg)

    mosh 1.2.4 is backwards-compatible with mosh clients back to 0.96 and mosh servers back to 1.0.9. Please let us know of any problems (https://github.com/keithw/mosh/issues).

    Best regards from the Mosh team, Keith

    Source code(tar.gz)
    Source code(zip)
Owner
Mosh (mobile shell)
Mosh (mobile shell)
simple c program thats spawns a shell wants executed, this shell will detect your os and upon entering will erase or reset the system V1.0

kill-shell simple c program thats spawns a shell wants executed, this shell will detect your os and upon entering will erase or reset the system V1.0

RE43P3R 1 Oct 18, 2021
Pine's ok shell, a shell in C++

POSH Pine's ok shell, a shell in C++ Answers to questions nobody asked. "Is your name Pine?" No, although that would be neat. Pine is supposed to be a

Boops-Boops 1 Nov 6, 2021
SimPle SHell - minimalist Unix interactive shell written in a single C file

SimPle SHell - minimalist Unix interactive shell written in a single C file. The shell does not support scripting yet and is in an early stage of development. If you notice any bug, please open an issue on github.

sewe2000 2 Oct 24, 2021
Tiny Mobile Terminal Device Kit.

Tiny Mobile Terminal Device Kit.

稚晖 1.2k May 16, 2022
a shell written in C

shell a shell written in C. CREDITS = https://github.com/brenns10/lsh/blob/master/src/main.c -for most of the template code. This project has a 10% ch

Arin 11 Jul 1, 2021
A Windows Shell Extension for the Pixar USD file format.

Activision USD Shell Extension A Windows Shell Extension for the Pixar USD file format. Windows Explorer Features Hydra Realtime Preview Thumbnails Co

null 276 May 9, 2022
IDAShell is a shell extension for launching IDA from the context menu of executables.

IDAShell About IDAShell is a shell extension for launching IDA from the context menu of executables. Usage Just install and it works. If you moved IDA

null 147 Apr 29, 2022
LwSHELL is lightweight, platform independent, command line shell for embedded systems.

LwSHELL is lightweight, platform independent, command line shell for embedded systems. It targets communication with embedded systems from remote terminal to quickly send commands and the retrieve data from the device.

Tilen Majerle 47 May 6, 2022
LSH is a simple implementation of a shell in C

It demonstrates the basics of how a shell works. That is: read, parse, fork, exec, and wait. Since its purpose is demonstration (not feature completeness or even fitness for casual use), it has many limitations

Stephen Brennan 1.2k May 11, 2022
Yori is a CMD replacement shell that supports backquotes, job control, and improves tab completion, file matching, aliases, command history, and more.

Yori is a CMD replacement shell that supports backquotes, job control, and improves tab completion, file matching, aliases, command history, and more.

Malcolm Smith 1k May 8, 2022
An implementation of shell commands in C++

ShellSynergy An implementation of shell commands in C++ using std::filesystem Build To run the project execute command: [email protected]:~$ ./RUN.sh Short shel

Vova Makotkin 6 Dec 7, 2021
A C-based Mini Shell: mumsh

A C-based Mini Shell: mumsh This project is a course project in VE482 Operating System @UM-SJTU Joint Institute. In this project, a mini shell mumsh i

Kexuan Huang 4 Feb 19, 2022
Linux Shell Implementation In C - Language

Linux-Shell ASSIGNMENT 2 Name : Naman Anand Roll no : 200101070 SUBJECT : CS242 ASSIGNMENT : 2 COMPILING AND FOR RUNNING COMMANDS :-> 1)gcc -o 2001010

Naman  Anand 17 Oct 30, 2021
Flexible and fast Z-shell plugin manager that will allow installing everything from GitHub and other sites.

ZINIT News Zinit Wiki Quick Start Install Automatic Installation (Recommended) Manual Installation Usage Introduction Plugins and snippets Upgrade Zin

z-shell 25 Apr 18, 2022
Mini Shell in C implementing the basic command line functionalities

Mini-Shell Mini Shell in C implementing the basic command line functionalities Instructions to execute the shell: Download the readline library using

Mansi 1 Nov 19, 2021
Linux Shell Implementation In C - Language

Linux-Mini-Shell This is a C code for Linux Shell (a mini version). The code is designed to work properly in LINUX terminal. To compile the code and r

Akshat Mittal 2 Dec 1, 2021
A tiny UNIX shell.

Tiny SHell - TSH Description This project is a tiny UNIX shell supports only job control. It's the 5th lab of 15-213: Introduction to Computer Systems

Ali Ghorab 2 Apr 3, 2022
Shpp - Call c++ functions from a shell with any arguments of any types parsed automatically

shpp Call c++ functions from a shell with any arguments of any types parsed automatically Declare a variable or define a function and register it in s

Pedro Moreira 95 Oct 24, 2021
✔️The smallest header-only GUI library(4 KLOC) for all platforms

Welcome to GUI-lite The smallest header-only GUI library (4 KLOC) for all platforms. 中文 Lightweight ✂️ Small: 4,000+ lines of C++ code, zero dependenc

null 6.2k May 13, 2022
Mobile Robot Programming Toolkit (MRPT) provides C++ libraries aimed at researchers in mobile robotics and computer vision

The MRPT project 1. Introduction Mobile Robot Programming Toolkit (MRPT) provides C++ libraries aimed at researchers in mobile robotics and computer v

MRPT 1.4k May 12, 2022
crypted admin shell: SSH-like strong crypto remote admin shell for Linux, BSD, Android, Solaris and OSX

crypted admin shell: SSH-like strong crypto remote admin shell for Linux, BSD, Android, Solaris and OSX

Sebastian 129 May 11, 2022
simple c program thats spawns a shell wants executed, this shell will detect your os and upon entering will erase or reset the system V1.0

kill-shell simple c program thats spawns a shell wants executed, this shell will detect your os and upon entering will erase or reset the system V1.0

RE43P3R 1 Oct 18, 2021
Pine's ok shell, a shell in C++

POSH Pine's ok shell, a shell in C++ Answers to questions nobody asked. "Is your name Pine?" No, although that would be neat. Pine is supposed to be a

Boops-Boops 1 Nov 6, 2021
SimPle SHell - minimalist Unix interactive shell written in a single C file

SimPle SHell - minimalist Unix interactive shell written in a single C file. The shell does not support scripting yet and is in an early stage of development. If you notice any bug, please open an issue on github.

sewe2000 2 Oct 24, 2021
My_Shell is a user-defined interactive shell written in C that works similar to the original shell in linux

MY_SHELL Overview My_Shell is a user-defined interactive shell written in C that works similar to the original shell and it can execeute many of the l

Greeshma 1 Nov 22, 2021
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.

JUCE is an open-source cross-platform C++ application framework used for rapidly developing high quality desktop and mobile applications, including VS

JUCE 4.2k May 9, 2022
Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more

Apache MXNet (incubating) for Deep Learning Apache MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to m

The Apache Software Foundation 20k May 9, 2022
:zap: The Mobile Robot Programming Toolkit (MRPT)

The MRPT project gcc/clang: MSVC: Last stable release: GH downloads: SF downloads (datasets): Last Win64 builds: Workspace: 1. Introduction Mobile Rob

MRPT 1.4k May 18, 2022
Mobile robot simulator

The Stage Simulator This is the Stage README file, containing an introduction, license and citation information. Stage is a 2(.5)D robotics standalone

Richard Vaughan 341 Apr 25, 2022